猿问

如何将 HQL 放入实体中?

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

@Autowired
private transient EntityManager entityManager;

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


繁花如伊
浏览 120回答 1
1回答

万千封印

@Autowired 用于 bean,带有 @Service 或 @Component 的类。标记为@Configuration 的类也可以使用@Autowired。这些类的新实例由 Spring 创建和管理,如果您尝试创建这些类的新实例 @Autowired 也不会在那里工作。如MyClass myClass = new MyClass()用@Entity 标记的类不是托管 bean,它们是在您从数据库中查询它们时由实体管理器创建的,但是当您创建新行时,您会创建一个新实例。春天不做这对他们来说很神奇。您应该从@Service 调用存储过程,就像使用@Repository 或实体管理器来保存@Entity 一样。
随时随地看视频慕课网APP

相关分类

Java
我要回答