Java Mailing List Archive

http://www.gg3721.com/

Home » users.openjpa »

Re: bidirectional one-to-many relationship with join-table

Pinaki Poddar

2008-08-08

Replies: Find Java Web Hosting

Author LoginPost Reply

Hi,
Please try the following mapping for a bi-directional one-to-many relation
with a join table.

public class Person {
@Id
private long ssn;
 
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="PERSON_ADDRESSES",
   joinColumns       = @JoinColumn(name="PERSON_SSN",  
referencedColumnName="SSN"),
   inverseJoinColumns = @JoinColumn(name="ADDRESS_PHONE",
referencedColumnName="PHONE"))
 private Set<Address> addresses = new HashSet<Address>();

public class Address {
@Id
private String phone;
 
@ManyToOne
@JoinColumn(table="PERSON_ADDRESSES", referencedColumnName="SSN")
private Person person;


The above mapping manifests to following database schema in MySQL

CREATE TABLE ADDRESS (
phone varchar(255) NOT NULL,
PRIMARY KEY (phone)
)

CREATE TABLE PERSON (
`ssn` bigint(20) NOT NULL,
PRIMARY KEY (`ssn`)
)

and a Join Table
CREATE TABLE PERSON_ADDRESSES (
ADDRESS_PHONE varchar(255) default NULL,
PERSON_SSN     bigint(20) default NULL,
KEY I_PRSNSSS_ADDRESS_PHONE (ADDRESS_PHONE),
KEY I_PRSNSSS_PERSON         (PERSON_SSN)
)

Let us know if this works for you and you can perform CRUD operations on
this schema.

--
Sent from the OpenJPA Users mailing list archive at Nabble.com.

©2008 gg3721.com - Jax Systems, LLC, U.S.A.