知道为什么hibernate抱怨类型转换?我已经作为String传递给函数了。我正在使用带有命名参数的@Query语法。可以在查询中嵌入较低的函数吗?
源代码:
@Query("from UserEntity t where lower(t.email) = lower(:email)")
List<UserEntity> findByEmail(@Param("email") String email);
错误:
Caused by: org.postgresql.util.PSQLException: ERROR: function lower(bytea) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 899
nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
相关链接: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.named-parameters
答案 0 :(得分:2)
我终于明白了发生了什么。我收到错误是因为当我调用函数findByEmail
时,在某些情况下,电子邮件是null
,导致postgres抱怨。我只需要在调用此函数之前检查null
。感谢@ akshar-patel试图提供帮助。
答案 1 :(得分:1)
当存在类型不匹配时,通常会发生此错误。 textstat_simil(dtm3, method = "cosine")
# A.1 A.2 A.3 A.4 B.1 B.2 B.3
# A.2 0.2886751
# A.3 0.8660254 0.3333333
# A.4 0.4472136 0.2581989 0.5163978
# B.1 0.7500000 0.5773503 0.8660254 0.4472136
# B.2 0.7071068 0.4082483 0.8164966 0.6324555 0.7071068
# B.3 0.5773503 0.0000000 0.3333333 0.2581989 0.2886751 0.4082483
# B.4 1.0000000 0.2886751 0.8660254 0.4472136 0.7500000 0.7071068 0.5773503
被解释为email
类型。您可以尝试添加显式强制转换,例如
bytea
答案 2 :(得分:-2)
我终于明白发生了什么事。我收到错误消息是因为当我调用函数findByEmail时,在某些情况下email为null会导致问题