如何将HQL放在实体中?

时间:2018-08-22 02:48:07

标签: java spring hibernate entity hql

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

@Autowired
private transient EntityManager entityManager;

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

1 个答案:

答案 0 :(得分:1)

@Autowired用于Bean,具有@Service或@Component的类。标记为@Configuration的类也可以使用@Autowired。这些类的新实例由Spring制作和管理,如果您尝试创建这些类的新实例,@ Autowired也将无法在其中工作。例如MyClass myClass = new MyClass()

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