如何解决@Inheritance TABLE_PER_CLASS条件奇怪的行为
|| 在我的应用程序中,我有一个这样的映射@MappedSuperclass
public abstract class Base implements Serializable {
@Entity
@Table(name = \"LevelOne\")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class LevelOne extends Base {
@Entity
@Table(name = \"LevelTwo\")
public class LevelTwo extends LevelOne {
@Entity
@Table(name = \"LevelThree\")
public class LevelThree extends LevelTwo {
可以按预期在数据库中创建表。当我尝试创建这样的查询时,我遇到了问题:
session.getCurrentSession().createCriteria(LevelOne.class,\"levelOne\"). [..] .list();
我从所有其他LevelX表中不仅从LevelOne表中获得结果。
我不确定是否会发生此行为,或者通过不使用带有\“ @ Inheritance \”批注的抽象类来映射是否出错,但是我只需要获取\“ LevelOne \”结果。
我怎么能得到它们?
解决方法
是的,这是预期的行为。如果仅需要
LevelOne
,则对隐式class
属性添加限制:
session.getCurrentSession()
.createCriteria(LevelOne.class,\"levelOne\")
.add(Restrictions.eq(\"class\",LevelOne.class))
. [..] .list();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。