java - 我可以在 JpaRepository nativeQuery 中使用枚举参数吗?

标签 java sql hibernate enums spring-data-jpa

实体看起来像这样:

@Getter
@Setter
@Entity
public class Application {
@Id
private Long id;
@Enumerated(EnumType.STRING)
private ApplicationStatus status;
}

代码是这样工作的:

public interface ApplicationRepository extends JpaRepository<Application, Long> {
@Query("SELECT app FROM #{#entityName} AS app WHERE app.status LIKE :status")
List<Application> find(@Param("status") ApplicationStatus status);

但是与 nativeQuery 相同的代码段 - 不会:

@Query(value = "SELECT app.* FROM application AS app WHERE app.status LIKE :status", nativeQuery = true)
List<Application> findNative(@Param("status") ApplicationStatus status);
}

我没有任何异常(exception),只是空列表。

我该如何解决这个问题?是否可以将 enumnativeQuery 一起使用?

P.S 我可以将 String 传递给方法而不是 ApplicationStatus 但也许还有其他选择?

最佳答案

正在关注 similar question具有类似的要求和 one of the answers指向 Spring Expression Language (SpEL)你可以使用:

public interface ApplicationRepository extends JpaRepository<Application, Long> {
    @Query(nativeQuery = true, value = "SELECT app FROM #{#entityName} AS app WHERE app.status=:#{#status.name()}")
    List<Application> find(@Param("status") ApplicationStatus status);
}

上面重要的部分是app.status=:#{#status.name()}

关于java - 我可以在 JpaRepository nativeQuery 中使用枚举参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44460394/

相关文章:

java - 关闭与数据库的连接并不会关闭所有连接

mysql - 如何在sql中检查具有多个条件的列?

java - 公司及其员 worker 数的 JPA 标准查询

java - 确定字符串是否具有所有唯一字符

java - 无法使用 Apache POI 打开 XLSX 文件 : NoClassDefFoundError

java - Hibernate 4.3.0 XML 映射转义字符异常

Hibernate 分布式缓存 - 多个应用程序可以共享同一个缓存吗?

java - 学习 Spring/Hibernate 的菜鸟项目

c# - Java Socket 服务器和客户端 Socket C# 问题

java - OnTouchListener 不适用于相对布局