如何使用Hibernate 6简化JPA查询?

v9tzhpje  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(136)

根据这篇文章的评论,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简写语法的声明是什么意思,以及我如何使用这个特性来简化我的代码?

感谢您的帮助

gudnpqoy

gudnpqoy1#

这应该可以工作:

SELECT email
FROM UserEmail email
WHERE email.emailStatus.description = ACTIVE

ACTIVE的类型将从description属性的类型推断出来。

相关问题