Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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

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
Java 坚持;“一”;Hibernate的一对夫妻关系的一部分_Java_Hibernate - Fatal编程技术网

Java 坚持;“一”;Hibernate的一对夫妻关系的一部分

Java 坚持;“一”;Hibernate的一对夫妻关系的一部分,java,hibernate,Java,Hibernate,我有两个实体A和B,A与许多B关联。如果我有一个UI,可以更新实体a的记录,然后在后端,我将根据db的id获取该实体,并在从UI获取的a对象中设置新值,然后我将休眠保存功能。现在的问题是,由于我们为每个a都有一个B的列表,并且B的列表没有变化,hibernate是否仍然更新B实体的相同记录,并说如果a有10行B与之关联,它会运行11个查询?1表示A中的实际数据更改,10表示相关Bs 关于,不,据我所知,不会的。在执行实际查询之前,Hibernate将尝试计算插入次数、更新次数、删除次数等。对于如

我有两个实体A和B,A与许多B关联。如果我有一个UI,可以更新实体a的记录,然后在后端,我将根据db的id获取该实体,并在从UI获取的a对象中设置新值,然后我将休眠保存功能。现在的问题是,由于我们为每个a都有一个B的列表,并且B的列表没有变化,hibernate是否仍然更新B实体的相同记录,并说如果a有10行B与之关联,它会运行11个查询?1表示A中的实际数据更改,10表示相关Bs


关于,

不,据我所知,不会的。在执行实际查询之前,Hibernate将尝试计算插入次数、更新次数、删除次数等。对于如何逐个执行这些查询,还有一些特殊的顺序。如果打开日志,您实际上可以看到它们。在您的情况下,因为B表记录不更新,所以它不会生成更新查询。我很好奇Hibernate如何知道,当我们调用与A相关联的B的特定对象上的setter方法时,运行哪些查询可能是基于什么?我不太清楚这一点。但我认为实体类中的“equal”方法可用于检查对象是否有更新,ID字段可用于确定它是新记录还是更新的现有记录。