我已经阅读了很多有关在查询中使用枚举作为参数的信息。我的项目中有一些查询,使用这些枚举中的值作为参数。
例如:
public enum YesNo {
Y, N
}
查询:
select ent
from
Entity ent
where
ent.id = :id
and ent.deleted = project.path.example.YesNo.N
实体:
@Entity
public class Entity{
Long id;
@Enumerated(EnumType.STRING)
YesNo deleted;
}
上述正常运行。
但是,当我有以下内容时:
interface Commons{
interface MostCommonTypesofAnimals {
long DOG = 1L;
long CAT = 2L;
}
}
查询
select a
from
Animal a
where
a.id = :id
and a.type = project.path.example.Commons.MostCommonTypesofAnimals.DOG
实体
@Entity
public class Animal{
Long id;
Type type;
}
@Entity
public class Type{
public Long id;
}
即使实际上是正确的,也不能告诉我该路径不正确。
有什么解决方法吗?还是无法映射接口值?谁能给我一个可行的例子?我找不到类似的东西。
请注意,这仅是说明情况的示例。这些不是我使用的真实姓名或任何其他内容。
答案 0 :(得分:1)
要在使用hibernate / jpa(基于标签)时使用枚举,应在Pojo类中使用注释。
@Enumerated(EnumType.ORDINAL)
在您的示例中,类似:
@Entity
@Table(name = "tableName")
public class entityName {
@Enumerated(EnumType.ORDINAL)
private YesNo yesNoEnum;
}
您可以根据需要将注释放在此处或在吸气剂中。
您可以找到更多信息here
ps:是或否,建议您使用布尔值,而不是枚举