| Author |
How to do JPA OneToOne relationship insert only one side of the relation
|
Raul De Villa
Greenhorn
Joined: Sep 03, 2012
Posts: 2
|
|
Hi folks.
In this moment I'm having a problem with my JPA implementation. I have two Entities as following:
Entity Position
Entity Employee
In the other hand I have this Session Bean:
Remote Interface
Remote Interface Implementation
The previous code includes the class Sequence. By the moment it only generates a secuential value for using as primary key for the entity Employee.
This is the content of the file persistence.xml
This is my test class:
And finally, this is the database script:
Before I executed test class EmployeeTest, I inserted one row in the table tbl_positions like this:
Because tbl_positions is a catalog and it most not be created when I create an Employee.
My problem arise when I executed the test class EmployeeTest. When I invoke the method service.createEmployee(employee), I get the exception: Duplicate entry '1' for key 'PRIMARY' referencing the table tbl_positions. This is a problem for me because what I need is that if a Position already exists, it only creates the Employee. Even better, for business constraints when I create an Employee, all the Positions must exist.
Thanks for any help about it !!
Best tegards,
RADE
|
 |
James Boswell
Ranch Hand
Joined: Nov 09, 2011
Posts: 657
|
|
Your problem is because of the cascade type:
So when you attempt to create an Employee with position 1, it cascades this and attempts to create a Position with ID 1 which breaks the primary key constraint as there is already a row with this ID.
Try this instead:
|
 |
Raul De Villa
Greenhorn
Joined: Sep 03, 2012
Posts: 2
|
|
Excellent James !!... this solves my problem !
Thank you very much !
|
 |
E Armitage
Ranch Hand
Joined: Mar 17, 2012
Posts: 220
|
|
Why are you assigning some Ids manually?
Better let the persistence provider take care of persistence Ids.
|
 |
 |
|
|
subject: How to do JPA OneToOne relationship insert only one side of the relation
|
|
|