提问者:小点点

@ManyToOne(fetch=FetchType。懒惰,可选=假)仍然抓取


我有一个@Embeddable类:

@Embeddable
@Table(name="MY_TABLE")
public class MyTable {
    @ManyToOne(fetch=FetchType.LAZY, optional=false)
    @JoinColumn(name="my_other_id")
    private MyOtherEntity myOtherEntity;
    ...
}

@Entity
@Table(name="MY_OTHER_TABLE")
@DiscriminatorColumn(name="DISC", discriminatorType=DiscriminatorType.STRING)
public abstract class MyOtherEntity {
    ...
}

@Entity
@DiscriminatorValue("A")
public class MyOtherEntityA extends MyOtherEntity {
    ...
}

@Entity
@DiscriminatorValue("B")
public class MyOtherEntityB extends MyOtherEntity {
    ...
}

LAZY获取类型一样,我希望MyOtherEntity仅是代理,而不是实际初始化的类。但是,一旦MyTable的所有者类调用getMyTable(),Hibernate仍然会发出一个查询来获取其所有列(除了在MySotherEntity中进一步标记为LAZY的列)。

按照Hibernate中的建议添加optional=false:一对一延迟加载,optional=false,Hibernate ManyToOne FetchType.lazy不工作?没有帮助。并且该类不是Hibernate ManyToOne中所建议的最终类,FetchType.LAZY不获取LAZY。LAZY没有按预期工作的任何其他原因?


共1个答案

匿名用户

指定 @Proxy(lazy=true)

@Proxy(lazy=true) 
@Embeddable
@Table(name="MY_TABLE")