在Hibernate实体中添加字段以使用布尔值指示的最简洁方法是在另一个表

时间:2016-05-30 15:01:12

标签: hibernate jpa entity

我的数据库中有2个tabke之间的经典FK。 表A中由FK重新激活的表A.

我为A创建了一个实体,我希望它有一个布尔属性,表明它是否被至少1个B引用。

是否可以这样做,所以我不必添加一个列表,并且每次都检查它是否为空,即使我根本不在乎B? / p>

2 个答案:

答案 0 :(得分:1)

您可以使用特定于hibernate,不符合JPA的@Formula注释。

https://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-property

@Formula("select count(*) from table_b where a_id = id")
private int countOfB;

public boolean hasB(){
    return countOfB > 0;
}

答案 1 :(得分:0)

谢谢,让它合作:

@Formula(value = "(select count (TABLE_B.ID) from TABLE_B where TABLE_B.A_ID = id)")

1)放入select关键字,因为我正在处理另一个表 2)围绕整个语句括号,以避免SQL错误 3)不要在计数和左括号之间留一个空格,否则它会添加一个别名来计算和弄乱sql