Java JPA实体持久化另一个实体

Java JPA实体持久化另一个实体,java,jpa,jakarta-ee,entity,Java,Jpa,Jakarta Ee,Entity,我有一个销售实体,在实体被持久化之前,我想创建一个收入实体。我可以在会话bean中实现这一点,但如果它封装在销售实体中,我会更喜欢它。所以我可以做: em.persist(sale); 它会自动创建一个收入实体,并将其保持不变 我不希望销售与收入有关联,因为我可以将它们关联起来并进行级联 这就像销售实体创建收入实体的一个实例,然后在EntityManager上调用persist方法一样,因为这既不可行也不是一个好主意,我开始认为它应该由EJB执行。意见?您是否尝试过@PrePersist注释

我有一个销售实体,在实体被持久化之前,我想创建一个收入实体。我可以在会话bean中实现这一点,但如果它封装在销售实体中,我会更喜欢它。所以我可以做:

em.persist(sale);
它会自动创建一个收入实体,并将其保持不变

我不希望销售与收入有关联,因为我可以将它们关联起来并进行级联


这就像销售实体创建收入实体的一个实例,然后在EntityManager上调用persist方法一样,因为这既不可行也不是一个好主意,我开始认为它应该由EJB执行。意见?

您是否尝试过@PrePersist注释


您不希望直接从EJB持久化收入实体,这有什么原因吗?我看不出这会给你带来什么,除了让其他人更难使用/维护你的代码之外。@Christina,我不确定,我认为,如果是由销售实体完成的,它将向上层隐藏复杂性,这样我就不必每次创建销售时都记住创建这两个实体。我在这方面没有太多经验,这不是一个好主意吗?个人来说,除非我有一个很好的理由,否则我不会这么做,因为通常人们都不希望实体做像那样不寻常的事情。如果您需要在代码中的多个位置创建这两个实体,您可以在EJB中始终拥有一个私有方法,如果需要从多个执行此操作的EJB调用它,甚至可以在帮助器类中拥有私有方法。这样做的好处是,阅读您的代码的人可以看到调用的方法,并可以看到它的功能,而不是依赖于PrePersist注释或任何类似的东西,而大多数人都不会去寻找,如果他们不知道它在那里的话。看起来销售和收入之间存在一对一的关系。为什么不这样对它们建模,然后遵循Padmarag的建议呢?是的,但这不会持久化实体,除非我将这两个实例关联起来并进行级联持久化