考虑像这样的Cat实体(伪代码):
@Entity
class Cat {
@Id
Long id;
@Column
String name;
@Column
String size; /* may be "BIG", "SMALL", "TINY" see (1) */
@OneToMany
List<Cat> offsprings;
}
此HQL查询,按'TINY'大小的小猫搜索
from Cat c join c.offsprings o where o.size = 'TINY'
会爆炸
错误:整数的输入语法无效:“TINY”
因为size
是一个特殊的属性名称,在这种情况下,它会计算猫的后代的数量。
在这样的场景中,有没有一种正确的方法可以让Hibernate将o.size
(或可能o.class
和其他人)视为常规属性名称?
(1)我不是这个令人遗憾的设计的作者,也不是宽恕它。但是,我现在无法修改它。