我正在尝试在jqp查询中使用枚举,但收到错误
org.hibernate.QueryException: Not all named parameters have been set: [Deactivated]
这是我的代码
import com.uzzz.enums.DStateEnum;
@Enumerated(EnumType.STRING)
@Query("SELECT dlCode FROM GDETable WHERE d.Id = ?1 AND d.dState.state <> :Deactivated")
List<String> findAllDsCodeExcludingDeactivatedById(Integer Id);
如何解决此问题?
这里是DStateEnum.java
public enum DStateEnum {
Cancelled("Cancelled"),
Active("Active"),
Paused("Paused"),
Deactivated("Deactivated");
private DStateEnum(final String name){
this.name = name;
}
private String name;
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
public static DStateEnum fromString(String text) {
if (text != null) {
for (DStateEnum b : DStateEnum.values()) {
if (text.equalsIgnoreCase(b.getName())) {
return b;
}
}
}
return null;
}
}
答案 0 :(得分:2)
查询方法定义存在多种问题:
?1
和?2
,或者为?1
找到一个名称。:Description
的方法时,Spring Data将无法将其绑定到查询(它应该怎么做?)。答案 1 :(得分:0)
您的查询中有一个名为:Deactivated
的{{3}}尚未获得值。
我对@Query注释并不太熟悉,但我认为你只提供了“id”值,而不是你方法中的“state”值。您需要传入“:Deactivated”命名参数或将其替换为固定值。