小编Mou*_*ast的帖子

单表继承WITHOUT Discriminator列

亲爱的同志们,早上好,

这开始变得烦人 - 一件简单的事情,但几个小时的斗争,我变老了吗?

我试图使用JPA by Hibernate将两个类映射到一个表.我们的想法是在父类中只有一小部分列,在子类中只有更大/全集.没有涉及TABLE继承,只有类继承.怎么能完成?

这样做不起作用:

@Entity
@Table(name = "the_table")
class Parent implements Serializable {
}

@Entity
@Table(name = "the_table")
class Child extends Parent implements Serializable {
}
Run Code Online (Sandbox Code Playgroud)

Hibernate假定默认继承策略为InheritanceType.SINGLE_TABLE,并且默认情况下正在寻找鉴别器列 - DTYPE.但是等等 - 没有表继承,鉴别器列没有出现.

我还看了一下PolymorphismType.EXPLICIT没有任何区别.堆栈跟踪是:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'apprentice0_.DTYPE' in 'where clause'
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
   at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
   at com.mysql.jdbc.Util.getInstance(Util.java:386)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
   at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
   at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2281)
   at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
   at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
   at org.hibernate.loader.Loader.getResultSet(Loader.java:1808) …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

21
推荐指数
3
解决办法
2万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1