加入LAZY映射

时间:2015-02-25 08:21:24

标签: java spring hibernate

我找不到答案的简单问题。

如果我有一个与B和C有关系的实体A和一个CascadeType.ALL。然后我修改A,并保存它。

然后在查询中,如果这些映射声明为LAZY,Hibernate会使用B和C进行连接表。实体B和C根本没有变化,因此我们应该为这些实体使用Hibernate代理。

但是当我看到日志文件时,我可以看到A与B和C之间的“左外连接”。

我在MySQL中遇到问题,因为允许最大连接数(61)。

问候。

2 个答案:

答案 0 :(得分:0)

  

你的问题不明确!

假设您在询问 - 您的实体 A B C 有关系。如果您更新并保存A,B和C将自动保存吗?

如果是这种情况,需要适当的级联类型。

如果您希望在保存 A 时保存实体 B C ,则需要 cascade = CascadeType.UPDATE < / strong>

A {
    @OneToMany(cascade = CascadeType.Update, fetch = FetchType.LAZY)
    B b;
}

答案 1 :(得分:0)

您的问题不明确

如果您想在更新A时知道hibernate是否更新(B和C)?如果您的级联未设置为UPDATE或SAVE_UPDATE,则答案为NO。 (A的id不会改变)。

除此之外,由于你的获取是LAZY,你不能修改C和B