【问题标题】:@ManyToOne(fetch=FetchType.LAZY, optional=false) still fetching@ManyToOne(fetch=FetchType.LAZY, optional=false) 仍在获取
【发布时间】:2018-07-22 04:58:21
【问题描述】:

我有一个@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 仍会发出查询以获取其所有列(除了在MyOtherEntity 中进一步标记为 LAZY 的列)。

按照Hibernate: one-to-one lazy loading, optional = falseHibernate ManyToOne FetchType.LAZY is not working? 中的建议添加optional=false 没有帮助。并且课程不是 Hibernate ManyToOne with FetchType.LAZY not fetching lazy 中建议的最终课程。 LAZY 没有按预期工作的任何其他原因?

【问题讨论】:

  • 您如何验证FetchType.Lazy 是否在获取数据?
  • 您是否有某种内部实现需要休眠来获取其他实体,尽管它很懒惰?我记得我们在使用惰性获取时遇到过这样的问题,其中属性实体的“惰性”仅在运行时未引用内部惰性实体的封装实体的实例中得到保证......
  • @Embeddable@Table ...也许是希望和可能的,但我第一次遇到这种情况 .... 并且@DiscriminatorColumn 是(根据休眠用户指南)与@987654335 结合使用@...

标签: java hibernate jpa


【解决方案1】:

指定@Proxy(lazy=true)

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

【讨论】:

  • 谢谢,但这没有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 2011-08-01
  • 2015-07-16
  • 2015-03-07
  • 1970-01-01
相关资源
最近更新 更多