JPA-混合实体和非实体类

时间:2011-03-09 18:40:09

标签: java jpa

主题可能会产生误导。基本上,我有3个“实体”,它们之间有关系。只有一个实体需要持久化(在服务器重启之间)。我仍然希望在非持久性实体中使用数据库功能......例如查询。

处理这个问题的正确模式是什么?

我考虑过内存数据库,但由于我的一个实体需要持久化,我不认为这是一个选项,因为非持久性实体将在不同的持久性单元中。

另一个想法是保持一切持久,但在系统重新启动时擦除非持久性表。

?感谢。

2 个答案:

答案 0 :(得分:1)

你可以有两个持久性单位。一个是磁盘数据库,另一个是内存数据库。

关系需要是暂时的,或者可能是将外键存储到A和B.或者只是没有两者之间的关系,只需要在需要时执行查询以查找A或B,作为关系一个没有持久化的持久化实体似乎很奇怪。

答案 1 :(得分:0)

这本身并不是一个JPA问题。它适用于您正在使用的任何持久性机制。

如果我正确地阅读了您的问题,那么两个非持久性实体可能只是POJO,而在JPA应用程序中,它们不会存在于任何持久性单元中。

你没有描述这种关系,所以这是一个猜测。如果持久化实体由其他两个组成,则可能包含以下内容:

@Entity
@Table(name = "TABLE_NAME")
public class PersistingEntity implements Serializable {
    @Id
    @Column(name = "ID")
    private Long id;

    ...

    @Transient
    A a = new A();

    @Transient
    B b = new B();

    ...
}

其中A和B是非持久化实体。