JPA MappedSuperclass,Entity和OneToMany:继承问题

时间:2017-02-16 10:38:44

标签: java hibernate jpa

我知道有很多关于这些术语的帖子,但我的问题略有不同,我认为可以通过设计解决。

我有3个实体:

  • AbstractFileEntity
  • FileEntity
  • MultipageFileEntity

他们受到这样的约束:

AbstractFileEntity

@Data
@MappedSuperclass
public abstract class AbstractFileEntity {

    @Id
    @Column(name = "ID", updatable = false, nullable = false)
    @GeneratedValue
    protected UUID id;

}

FileEntity

@Data
@Entity
@Table(name = "T_FILE")
public class FileEntity
    extends AbstractFileEntity
    implements Serializable {

    @ManyToOne
    @JoinColumn(name="id_multipage_file")
    private MultipageFileEntity multipageFile;

    //annoying fields.....
}

MultipageFileEntity

@Data
@Entity
@Table(name = "T_MULTIPAGE_FILE")
public class MultipageFileEntity
    extends AbstractFileEntity
    implements Serializable {

    @OneToMany(mappedBy = "multipageFile", cascade = CascadeType.REMOVE)
    private Map<Integer, FileEntity> files;

}

所以这里我的Multipage基本上就是File的集合。但是我需要它们适合同一个Object系列,因为它们可以存储在Collection对象中。

问题

  1. 当我使用@MappedSuperclass时,我会落入使用@OneToMany或@ManyToMany定位未映射的类:错误。
  2. 当我在Abstract类上使用时,@Entity&amp; @Inheritance(strategy = InheritanceType.JOINED) annots,我有一个引用id循环,因为在同一个表中我们有一个自己的集合 - &gt;无限的自身收藏。
  3. 当我使用TABLE_PER_CLASS策略时,我基本上需要复制所有字段
  4. 我可能只创建一个实体文件,并在其上添加页码和MultipageFile ID,并将这些文件与多页文件区分开来;这就是全部。

    对此有何见解?非常感谢!

0 个答案:

没有答案