簡體   English   中英

休眠是否存在數據保存正確的外鍵

[英]hibernate if data exist save proper foreign key

我用表地址中的外鍵將表Employee制成。 當我保存新員工時,我想檢查表Address中是否已經存在該地址,如果不存在,則不要在Address中新建行,而是找到合適的行並將其保存在Employee中。

我使用SQL進行了類似的過程,但是使用休眠方式是否更簡單? 有了這段代碼,我總是有新的行。 我試圖進行查詢提取,但是我不知道如何使用此地址ID分配給Employee,而不是在地址中插入新行。 圖片在桌子上,所以很明顯我想要什么。 表格外觀鏈接到項目

Employee employee = new Employee();
Address address = new Address();
City city = new City();


 /*   Query query = session.createQuery("select  a.address_id  from Address  
a where a.street = :addName").setParameter("addName" , 
JFClasss.insStreet.getText());
List list = query.list();
if(!list.isEmpty()){

    addid = (int) list.get(0);
    address.setAddressId(addid);
   // save = 1;

} */

   address.setStreet(jf.insStreet.getText());
   city.setCityName(jf.insStreet.getText());
   employee.setName(jf.insName.getText());
   employee.setSurname(jf.insSurname.getText());
   employee.setAge(age);
   employee.setAddress(address);
   employee.setCity(city);


 session.saveOrUpdate(city);
 session.save(address);
 session.save(employee);     

解決了,我可以取出整個對象,然后使用saveOrUpdate再次保存它。

Employee employee = new Employee();
Address address;
City city = new City();


Query query = session.createQuery("select  a.address_id  from Address  a 
where a.street = :addName").setParameter("addName" , 
JFClasss.insStreet.getText());
List list = query.list();
if(!list.isEmpty()){

    addid = (int) list.get(0);
    address = (Address) session.get(Address.class, addid);
   // address.setAddressId(addid);
   // save = 1;

} 
else{
      address = new Address();
      address.setStreet(jf.insStreet.getText());
  }
 .
 .
 .
  session.saveOrUpdate(address);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM