Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

How to do JPA OneToOne relationship insert only one side of the relation

 
Raul De Villa
Greenhorn
Posts: 2
Google Web Toolkit Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

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
Bartender
Posts: 1051
5
Chrome Eclipse IDE Hibernate
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 2
Google Web Toolkit Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Excellent James !!... this solves my problem !

Thank you very much !
 
E Armitage
Rancher
Posts: 989
9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Why are you assigning some Ids manually?
Better let the persistence provider take care of persistence Ids.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic