作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能够存储、检索和查询具有枚举类型的实体(使用 JPA/Hibernate)。枚举字段用 @Enumerated(EnumType.STRING) 注释。
是否可以执行类似 "SELECT a FROM MyEntity a WHERE a.myEnum LIKE :param"
之类的操作?
想法是让它匹配枚举值字符串(在 DB 中)匹配“SYSTEM_%”或“BUSINESS_%”等模式的任何实体。
感谢您的帮助。
--- 更新:
当我尝试用这个查询时:
`@Query("SELECT e FROM MyEntity e WHERE e.myEnum LIKE :value")`
使用值(指示匹配任何......):
%%
我得到这个异常:
Caused by: java.lang.IllegalArgumentException: Parameter value [%%] did not match expected type [mypackage.MyEntity$MyEnum]
at org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:370)
at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:343)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:374)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:71)
最佳答案
当然。只需使用 query.setString("param", "BUSINESS_%");
。请注意,使用 setParameter()
而不是 setString()
会抛出 ClassCastException,因为 Hibernate 会尝试将其转换为枚举,但是 setString()
会正是您想要的。
关于java - 在具有枚举 (EnumType.STRING) 的实体上使用 LIKE 运算符执行 JPA 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825928/
我是一名优秀的程序员,十分优秀!