Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 自动确认manytone persist的外键约束_Hibernate - Fatal编程技术网

Hibernate 自动确认manytone persist的外键约束

Hibernate 自动确认manytone persist的外键约束,hibernate,Hibernate,这与这里的问题类似: 但我想知道是否有办法自动执行这种逻辑。当我在“many”表中看到一条新记录,该记录在“one”表中有一个外键时,我希望hibernate自动加载引用的实体并检查它是否存在,并访问该实体的字段(出于验证目的) 有没有办法只通过注释来实现这一点?在保存多个注释时,默认情况下就是这样做的: One one = (One) session.get(One.class, oneId); // get the one entity from the database Many man

这与这里的问题类似:

但我想知道是否有办法自动执行这种逻辑。当我在“many”表中看到一条新记录,该记录在“one”表中有一个外键时,我希望hibernate自动加载引用的实体并检查它是否存在,并访问该实体的字段(出于验证目的)


有没有办法只通过注释来实现这一点?

在保存多个注释时,默认情况下就是这样做的:

One one = (One) session.get(One.class, oneId); // get the one entity from the database
Many many = new Many();
many.setOne(one);
session.save(many);
如果您只需要一个对它的引用,而不实际从数据库加载它,请使用
session.load()
而不是
session.get()


无论您做什么,只有数据库可以保证数据的一致性(因为在您加载并附加到多个事务之后,另一个事务可能会删除该事务),所以您需要在数据库中设置外键约束。

我使用的是Spring Roo,它使用Spring data JPA,并且有自动CRUD支架,因此,当我尝试为“many”创建一个新记录时,它只调用:if(entityInformation.isNew(entity)){em.persist(entity);return entity;}else{return em.merge(entity);}这是错误的吗?像这样的平台是否应该考虑实体的多个特性?这没有错,只是在调用上述方法之前需要填充一个关联。