where 子句中抽象类的字段

Field from abstract class inside where clause

提问人:Igor Milovanovic 提问时间:10/13/2023 最后编辑:Igor Milovanovic 更新时间:10/13/2023 访问量:33

问:

您好,我有以下实体:

abstract Entity A {

long id;

boolean sharedField;

}
Entity B extends A {

string specificField;

@ManyToOne
@JoinColumn(name = "id_c")
private C c;
    
}
Entity C {

long id;

@OneToMany(mappedBy = "c", cascade = CascadeType.ALL)
@Where(clause = "sharedField = 'something'")
private List<B> bList;

}

因此,从 Hibernate 中,我在“where 子句”中得到了未知列“b.shared_field”

请注意,我的数据库中有表 A 的 id 和 shared_field 列,在表 B 中,我有 id(与表 A 中的相同)、id_c 和 specific_field。

有没有某种方法可以向 Hibernate(通过 Where 子句或其他方式)表明我只想拥有 B 表中满足以下条件的行。

我尝试添加NamedQuery,但没有用。

更新

我努力寻找路。这是我使用的@Where子句:

@Where(clause = "id IN (SELECT a.id FROM A a WHERE a.id = id AND a.shared_field = 'something')")
Java MySQL Spring 休眠

评论

0赞 Tim Biegeleisen 10/13/2023
我在这里看到两个问题:1)我没有看到注释在任何地方使用,2)该字段是布尔值,因此将其与字符串文字进行比较是没有意义的。@EntitysharedField
0赞 Igor Milovanovic 10/13/2023
它的伪代码,一切都写得很好,我实际上并没有从我的项目中复制代码,我只是描述了问题。
0赞 Tim Biegeleisen 10/13/2023
无论您发布什么代码,您都会在这里获得帮助。如果你的真实代码是不同的,那么你应该发布它。
0赞 Igor Milovanovic 10/13/2023
也许与其关注琐碎的事情,不如就实际问题提出一些建议。

答:

0赞 Igor Milovanovic 10/13/2023 #1

@Where(clause = “id IN (SELECT a.id FROM A A WHERE a.id = id AND a.shared_field = 'something')”)