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 @多通(fetch=FetchType.LAZY,可选=false)仍在抓取_Java_Hibernate_Jpa - Fatal编程技术网

Java @多通(fetch=FetchType.LAZY,可选=false)仍在抓取

Java @多通(fetch=FetchType.LAZY,可选=false)仍在抓取,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个@可嵌入的类: @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")

我有一个
@可嵌入的
类:

@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
fetch类型一样,我希望
MyOtherEntity
只是一个代理,而不是实际初始化的类。但是,当
MyTable
的所有者类调用
getMyTable()
时,Hibernate仍然会发出一个查询来获取它的所有列(除了那些在
mytherentity
中进一步标记为LAZY的列)

按照中的建议添加
optional=false
,但没有帮助。而且这门课并不是如中所建议的那样是最终的。是否还有其他原因导致LAZY无法按预期工作?

指定@Proxy(LAZY=true)


您是如何验证
FetchType.Lazy
是否正在获取数据的?是否有可能存在某种内部实现,它要求hibernate获取另一个实体,尽管它是懒惰的?我记得我们在使用惰性抓取时遇到过类似的问题,其中属性实体的“惰性”仅在封装实体的实例中得到保证,这些实例在运行时没有引用内部惰性实体……
@Embeddable@Table
…可能是我所希望和可能的,但我第一次遇到这个。。。。而且
@DiscriminatorColumn
是(根据hibernate用户指南)与
@heritation
相结合的。谢谢,但这没有帮助
@Proxy(lazy=true) 
@Embeddable
@Table(name="MY_TABLE")