gpt4 book ai didi

java - 在具有枚举 (EnumType.STRING) 的实体上使用 LIKE 运算符执行 JPA 查询

转载 作者:行者123 更新时间:2023-11-30 09:36:17 25 4
gpt4 key购买 nike

我能够存储、检索和查询具有枚举类型的实体(使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com