根据这篇文章的评论,Hibernate 6引入了对short hand语法的支持:
在Hibernate 6中,我们引入了对简写语法的支持。对于Hibernate 5,我相信你必须在HQL中使用FQN。..
不幸的是,我在互联网上找不到任何解释如何使用速记语法替换JPA查询中的完全限定名的内容。
所以最初的情况是这样的:
@Query("""
SELECT email
FROM UserEmail email
WHERE email.emailStatus.description = com.example.entity.EmailStatus$Description.ACTIVE
""")
Optional<UserEmail> findAllWithActiveStatus();
你可能猜对了,Description
是一个枚举,它作为一个内部类存在于EmailStatus
中。现在的目标是通过使用简短的语法来得到where-子句,如下所示:
@Query("""
SELECT email
FROM UserEmail email
WHERE email.emailStatus.description = Description.ACTIVE
""")
Optional<UserEmail> findAllWithActiveStatus();
有谁能解释一下Christian Beikov关于新的Hibernate 6简写语法的声明是什么意思,以及我如何使用这个特性来简化我的代码?
感谢您的帮助
1条答案
按热度按时间gudnpqoy1#
这应该可以工作:
ACTIVE
的类型将从description
属性的类型推断出来。