gpt4 book ai didi

java - @Inheritance TABLE_PER_CLASS 标准奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 08:17:14 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个这样的映射

@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();

关于java - @Inheritance TABLE_PER_CLASS 标准奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6125540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com