[英]hibernate if data exist save proper foreign key
I made table Employee with foreign key from table Address. 我用表地址中的外键将表Employee制成。 When I saving new Employee I want to check if in table Address is already exist that address and if exist dont make new row in Address but find proper and save it in Employee. 当我保存新员工时,我想检查表Address中是否已经存在该地址,如果不存在,则不要在Address中新建行,而是找到合适的行并将其保存在Employee中。
I made this like procedure with SQL but is it easier way to do it with hibernate? 我使用SQL进行了类似的过程,但是使用休眠方式是否更简单? With this code I always have new rows. 有了这段代码,我总是有新的行。 I tried to make query to extract but I don't know how to use this address ID to assign to Employee, not to insert new row in address. 我试图进行查询提取,但是我不知道如何使用此地址ID分配给Employee,而不是在地址中插入新行。 On picture is table so it is obvious what I want. 图片在桌子上,所以很明显我想要什么。 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);
Solved, I can take whole object and save it again with saveOrUpdate. 解决了,我可以取出整个对象,然后使用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.