I have a requirement to model a ManyToMany with additional attributes in the intersection
table and based on all my reaearch, it looks like modelling this as a 2 OneToMany
relationships is the right approach.
Design.
1. Create three clases Class A, ClassB and ClassAB (Intersection)
2. Define OneToMany from A -> AB
3. Define OneToMany from B -> AB
I wanted to clarify few observation that I have, before going ahead and completeing the
implementation.
Class A:
@Entity
| @Table(name = "A")
| public class A {
| ...
| @OneToMany(mappedBy="A")
| private List<AB> ab;
| public void setAb(List<AB> ab) {
| this.ab = ab;
| }
| }
Class AB:
@Entity
| @Table(name = "AB")
| public class AB {
| /*
| Do we need to specify an @Id column? It looks like
| the code works only if I define a seperate @id column as
| shown below. Also tried defining @Id as column "A_ID" with no
| success. Did I miss something?
| */
| @Id
| @Column(name="AB_ID")
| private int id;
| public void setId() {
| return id;
| }
| ...
| @ManyToOne
| @JoinColumn(name = "A_ID", nullable=false)
| private A a;
| public void setA(A a) {
| this.a = a;
| }
| }
Test Case:
public class ATest {
| @Test
| public void createAWithAB() {
| ...
| List<AB> abList = new ArrayList<AB>();
|
| //Create A using appropriate constructor
| A a = new A("....");
|
| //Create a new Party Address and set the Location.
| AB ab = new AB();
| ab.setId(100);
| ab.setA(a); //Set A on the intersection AB
| abList.add(ab);
|
| a.setAB(abList);
|
| // Creates an Person
| trans.begin();
|
| /*
| Should the AB record get created when we make the
| following call
| */
| em.persist(a); //Persists A
|
| /*
| Do we need to make a explicity call to persist AB?
| It looks like that the AB record only gets sved if we
| make this following Persist call
|
| */
| em.persist(ab); //Persisit AB
| trans.commit();
| }
| }
Please let me know whether my obsevations are correct. Otherwise can you please provide
some guidance on how to fix these issues. If correct, then what is the relevance of the
@OneToMnay annotation in the "Class A" and the setter "setAB()"?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4119950#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...