Jam*_*nen 4 java inheritance hibernate single-table-inheritance hibernate-annotations
好吧,这可能是一个远景,但这里有.
在Java(JRE 1.6.0_26-b03)中,我有两个类SuperControl
及其子类SubControl
.它们都需要是持久对象,而我正在使用Hibernate Annotations来实现这一点.我有大约210个正确持久的类.除了一个不是.
我的问题是SubControl
拒绝以任何方式继承SINGLE_TABLE
.当我说"拒绝"时,我的意思是整个JRE崩溃了.
这有点问题,因为我真的更喜欢SuperControl
成为映射的超类SubControl
.SuperControl
也可以是一个持久的实体.奇怪的是,我在其他地方的代码中有一个完全并行的层次结构,它可以正常工作.
这就是我要的:
@Entity
@MappedSuperclass
public class SuperControl extends ItsSuperClass {
// ...
}
@Entity
public class SubControl extends SuperControl {
// ...
}
Run Code Online (Sandbox Code Playgroud)
但它因错误而爆炸
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (c1_Optimizer.cpp:271), pid=5456, tid=1260
# guarantee(x_compare_res != Constant::not_comparable) failed: incomparable constants in IfOp
#
# JRE version: 6.0_26-b03
# Java VM: Java HotSpot(TM) Client VM (20.1-b02 mixed mode, sharing windows-x86 )
# An error report file with more information is saved as:
# C:\eclipse\hs_err_pid5456.log
Run Code Online (Sandbox Code Playgroud)
在没有提供任何继承提示的情况下,Hibernate默认为SINGLE_TABLE
(我可以通过创建DTYPE
列来判断).我可以在没有JVM崩溃的情况下明确指定它.
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class SuperControl extends ItsSuperClass {
// ...
}
@Entity
public class SubControl extends SuperControl {
// ...
}
Run Code Online (Sandbox Code Playgroud)
最糟糕的是,如果我删除SubControl
类ENTIRELY,甚至只删除它在hibernate.cfg.xml文件中的映射,JVM 仍会崩溃.这让我相信在SuperControl
和之间存在某种隐藏的联系SubControl
.也许在Eclipse等中缓存了一些东西.我重新启动了Eclipse,完成了几次清理和构建,甚至重新启动了我的机器,问题仍然存在.
有任何想法吗?我已经在这个工作了几个小时而且无处可去.
谢谢!
归档时间: |
|
查看次数: |
4334 次 |
最近记录: |