gpt4 book ai didi

java - 为什么我只能在实体类上放置 NamedQuery 注释

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:57 25 4
gpt4 key购买 nike

放置命名查询注释的合理位置是在数据访问类上,该类处理实体数据的保存、检索等逻辑。

但是,如果我在没有用@Entity 标记的类上放置 NamedQuery 注释,Hibernate 会抛出异常“没有为该名称定义查询”。

为什么 Hibernate 或 JPA 将命名查询限制为仅放置在实体上?它可能是 future 的功能吗?

有一些粗略的解决方法,例如使用 empty entity to hold queries ,这让我觉得不受这样的限制会很有用。我知道我可以使用 XML 配置,但对非实体的命名查询仍然有用。

最佳答案

如果您检查 JpaRepository你可以看到你可以用其他方式声明它们:

基于注释的命名查询配置

@Entity
@NamedQuery(name = "User.findByEmailAddress",
query = "select u from User u where u.emailAddress = ?1")
public class User {

}

在查询方法中使用@Query声明查询

public interface UserRepository extends JpaRepository<User, Long> {

@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
}

关于java - 为什么我只能在实体类上放置 NamedQuery 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com