aspose file tools*
The moose likes Object Relational Mapping and the fly likes Composite Key Mapping with OneToMany does not work Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "Composite Key Mapping with OneToMany does not work" Watch "Composite Key Mapping with OneToMany does not work" New topic
Author

Composite Key Mapping with OneToMany does not work

snehal dave
Greenhorn

Joined: Oct 12, 2008
Posts: 5
My requirement is as below.

Table: Application(id);

Table: Customer(Id,custid); ID is FK to Application table

Table: Address(Id,custid,addrid); Id and CustId are FK to Customer tab;e

My Mapping between Customer & Address table does not work. My Requirement is to insert Id & CustId in Address table.





Can anybody help me on this
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 16228
    
  21

"Does not work" is a pretty vague statement. You'll get more help if you can supply some error messages or something.


Customer surveys are for companies who didn't pay proper attention to begin with.
snehal dave
Greenhorn

Joined: Oct 12, 2008
Posts: 5
Hibernate: select SEQ_LCT.nextval from dual
insert into APPLICATION(status, id) values (?, ?)
insert into CUSTOMER (FIRSTNAME, GAUR_APPL_FLAG, INITIALNAME, LASTNAME, MIDDLENAME, id, customerid) values (?, ?, ?, ?, ?, ?, ?)
update CUSTOMER set id=? where id=? and customerid=?
update ADDRESS set id=?, CUSTOMERID=? where ADDRESSID=? and comp_appl_id=? and customerid=?

Instead of inserting a report , a update statement gets fired for address table
Waswani Naresh
Ranch Hand

Joined: May 01, 2008
Posts: 66
Hi Snehal,

Could you please show the code for inserting these POJOs into the Database ?

Regards,
Naresh Waswani


Naresh Waswani
snehal dave
Greenhorn

Joined: Oct 12, 2008
Posts: 5
Hi Naresh,
below is the code which i am using to persist the Entity

EntityManagerFactory emf=Persistence.createEntityManagerFactory("JPAService");
EntityManager em=emf.createEntityManager();
em.getTransaction().begin();

Application application=new Application();
Customer customer=new Customer();
Address address=new Address();

List addressList=new ArrayList();
addressList.add(address);

customer.address=addressList;

List customerList=new ArrayList();
customerList.add(customer);

application.customer=customerList;

em.persist(application);


em.getTransaction().commit();


and this is what i see in log file

Hibernate: select SEQ_LCT.nextval from dual
insert into APPLICATION(status, id) values (?, ?)
insert into CUSTOMER (FIRSTNAME, GAUR_APPL_FLAG, INITIALNAME, LASTNAME, MIDDLENAME, id, customerid) values (?, ?, ?, ?, ?, ?, ?)
update CUSTOMER set id=? where id=? and customerid=?
update ADDRESS set id=?, CUSTOMERID=? where ADDRESSID=? and id=? and customerid=?

In the code i have not mentioned all the fields of entity .. the Mapping between Application and Customer work fine i.e. i am able to insert primary key of Application table into Customer table .

But between Customer and Address JPA (using Hibernate) does not work , my requirement is to insert both customerid and id from CUSTOMER to ADDRESS table but UPDATE statement gets fired.


 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Composite Key Mapping with OneToMany does not work