Chi*_*jee 5 java hibernate jpa spring-data-jpa spring-boot
枚举,
public enum CountEnum {
ONE,
TWO
}
Run Code Online (Sandbox Code Playgroud)
实体类,
@Entity
public class Test {
...
@Enumerated(EnumType.ORDINAL)
private CountEnum countEnum;
...
}
Run Code Online (Sandbox Code Playgroud)
我想查询所有Test具有 countEnum 的行 'ONE'。但由于这里@Enumerated(EnumType.ORDINAL)是序数,我必须输入 int 值'ONE'而@Query不是 String。
我的存储库界面,
public interface ResourceRepository extends JpaRepository<Test, String> {
@Query(" select test from Test test where test.countEnum = " + CountEnum.ONE.ordinal())
List<Test> find();
}
Run Code Online (Sandbox Code Playgroud)
但它会抛出一个错误说 Attribute value must be constant. 那么,由于我不想放置硬编码的常量值,因此如何使用枚举的序数值查询所有这些行?
为什么你认为在编写 JPQL 时必须使用序数值?
JPA 规范指出:
4.6.1 文字
[...] 枚举文字支持使用 Java 枚举文字语法。必须指定完全限定的枚举类名。
因此,我希望像下面这样的东西能够工作:
public interface ResourceRepository extends JpaRepository<Test, String> {
@Query(" select test from Test test where test.countEnum = com.somepackage.with.sub.pakcages.CountEnum.ONE")
List<Test> find();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |