java - 如果数据存在则 hibernate 并保存正确的外键

标签 java mysql hibernate

我用地址表中的外键创建了员工表。当我保存新员工时,我想检查表地址中是否已存在该地址,如果存在,则不在地址中创建新行,而是找到正确的行并将其保存在员工中。

我用 SQL 做了这个类似的过程,但是用 hibernate 做这个有更简单的方法吗?使用这段代码我总是有新的行。我尝试进行查询以提取,但我不知道如何使用此地址 ID 分配给员工,而不是在地址中插入新行。图片上是 table ,所以很明显我想要什么。 table look , link to project

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);

关于java - 如果数据存在则 hibernate 并保存正确的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48563784/

相关文章:

java - 尝试使用 Hibernate 进行 SELECT 时出现 ConverterNotFoundException

java - 如何在 java.time 的模式字符串中用时区格式化日期?

java - Jbpm-Java : Accessing objects withing process and calling methods on these objects

java - hibernate : fetch lazy collection with HQL

php - 调试 mySQLi 准备好的语句 -> 未找到电子邮件

python - 将 Tastypie REST API 投影到 python 对象中

java - 如何使用 Java Spring 配置运行独立的 Hibernate 4 SchemaExport

java - rxtxSerial librxtx-java Ubuntu

JAVA While 循环 - 最后一个 else if 语句不起作用

mysql - MySQL 中 GROUP_CONCAT 的对立面是什么?