spring jpa query where子句,具有枚举类型匹配

时间:2019-03-19 21:36:21

标签: java postgresql spring-boot spring-data-jpa

我正在使用spring-data-jpa通过spring boot和postgreSql进行对象关系映射,并编写了自定义方法以在与where条件匹配时获取task_id列的唯一值

@Query(value = "select distinct task_id from schema_task_test.test_table where type =:type", nativeQuery = true)
public List<Integer> findDistinctTasks(@Param("type") String type);

但是在数据库type中,类型为Enum,所以我得到执行了

错误

[ERROR] 2019-03-19 16:33:45,006 http-nio-8080-exec-1 org.hibernate.engine.jdbc.spi.SqlExceptionHelper - {} - ERROR: operator does not exist: schema_task_test.type_enum = character varying

Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

1 个答案:

答案 0 :(得分:0)

在本机查询中,您必须将显式强制转换为数据库枚举类型。

  

@Query(value =“从schema_task_test.test_table中选择不同的task_id,其中type = cast(:type为type)”,nativeQuery = true)

您还应该在实体中使用@Enumerated。

当您要将值另存为字符串时,可以使用@Enumerated(EnumType.STRING)