【问题标题】:How do I put HQL in an entity?如何将 HQL 放入实体中?
【发布时间】:2018-08-22 02:48:06
【问题描述】:

我有一个 Hibernate 实体,我想在其中放入一个方法。此方法将调用实体管理器并运行准备好的语句,但我不知道如何实例化实体管理器。每当我尝试时,像这样自动连接它:

@Autowired
private transient EntityManager entityManager;

当我运行应用程序时 entityManager 为空。自动装配适用于我的所有其他课程。为什么我不能在我的实体中自动装配 entityManager,以及如何在实体中执行我的查询?

【问题讨论】:

    标签: java spring hibernate entity hql


    【解决方案1】:

    @Autowired 用于带有@Service 或@Component 的bean、类。标记为@Configuration 的类也可以使用@Autowired。这些类的新实例由 Spring 创建和管理,如果您尝试创建这些类的新实例,@Autowired 也不会在那里工作。如MyClass myClass = new MyClass()

    标有@Entity 的类不是托管bean,它们是在您从数据库中查询它们时由实体管理器创建的,但是当您创建新行时,您会创建一个新实例。春天对他们来说并不神奇。您应该从@Service 调用存储过程,就像使用@Repository 或实体管理器来保存@Entity 一样。

    【讨论】:

    • 我的 DAO 被 @Component 注释了,这有关系吗?
    • 不,@Entity 不能有 @Autowired,为什么不能将存储过程调用放在 @Service 中?
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2013-09-12
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多