Java JPA本机查询-参数导致未知列错误,未转换为字符串

Java JPA本机查询-参数导致未知列错误,未转换为字符串,java,mysql,hibernate,jpa,jpql,Java,Mysql,Hibernate,Jpa,Jpql,我的简单JPA本机查询有问题 @Query(value = "SELECT * FROM transaction " + "WHERE " + "( :broker IS NULL OR transaction.broker = :broker ) AND " + "( :transaction_type IS NULL OR transaction.transaction_type = :tr

我的简单JPA本机查询有问题

@Query(value =
    "SELECT * FROM transaction " +
    "WHERE " +
    "( :broker IS NULL OR transaction.broker = :broker ) AND " +
    "( :transaction_type IS NULL OR transaction.transaction_type = :transaction_type ) AND " +
    "( :asset_id IS NULL OR transaction.asset_id = :asset_id )", nativeQuery = true)
Optional<List<TransactionEntity>> findAllByParams(@Param("broker") Broker broker,
                                                  @Param("transaction_type") TransactionType transactionType,
                                                  @Param("asset_id") Long assetId);
运行时获取此错误

[2020-10-30 19:23:42] [42S22][1054] Unknown column 'REVOLUT' in 'where clause'

不理解为什么命名参数没有转换为字符串。我已经尝试了我所能想到的一切,试图将其强制为字符串,但没有任何更改。

我认为您的返回值造成了一些问题。如果将其更改为
列表
,会发生什么情况?查询似乎非常简单,您可以使用JPQL,这样它就可以正确地检测枚举类型。不知道为什么要将它们作为文本插入,除了可能不认识到它们应该是字符串之外。@coladict很好的建议,这确实解决了我的问题。我仍然有兴趣知道它为什么要将它们作为文本插入,但现在我对这个解决方案很满意,谢谢。我认为您的返回值造成了一些麻烦。如果将其更改为
列表
,会发生什么情况?查询似乎非常简单,您可以使用JPQL,这样它就可以正确地检测枚举类型。不知道为什么要将它们作为文本插入,除了可能不认识到它们应该是字符串之外。@coladict很好的建议,这确实解决了我的问题。我仍然很想知道为什么要将它们作为文本插入,但现在我对这个解决方案很满意,谢谢
[2020-10-30 19:23:42] [42S22][1054] Unknown column 'REVOLUT' in 'where clause'