簡體   English   中英

休眠-@MappedSuperclass中的@OneToMany為每個子實體生成表

[英]Hibernate - @OneToMany in @MappedSuperclass generates table for every child entity

我有以下實體,它是應用程序中所有其他實體的基礎實體:

@Audited
@Data
@MappedSuperclass
public abstract class BaseEntity {

    public static final long UNSAVED = 0;

    @Id
    @GeneratedValue
    private long id;

    @OneToMany(cascade = CascadeType.ALL)
    private List<Image> images;

    @OneToMany(cascade = CascadeType.ALL)
    private List<File> files;

}

我的目標是擁有兩個表- 圖像文件,以便將這兩個表共享給所有擴展BaseEntity的實體。 我確實意識到,所有擴展BaseEntity的實體都應具有一個共享的ID序列。

然后,我有兩個實體,它們是BaseEntity的子類型:

@Entity
@Table
@Data
@EqualsAndHashCode(callSuper = false)
public class Equipment extends BaseEntity {
  private String name;
  @Enumerated(EnumType.STRING)
  private EquipmentType type;
  private String model;
  private String serial;
  private Boolean status;
}

@Entity
@Table
@Data
@EqualsAndHashCode(callSuper = false)
public class News extends BaseEntity {
  private String title;
  private String summary;
  private String content;
}

現在,當我設置spring.jpa.hibernate.ddl-auto = create-drop ,hibernate會為我生成以下表:

news, equipment, news_images, news_files, equipment_images, equipment_files

但是,我想有四個表:

   news, equipment, files, images

我真的很感謝您的幫助,

謝謝

嘗試將添加到@OneToMany列表中的@JoinColumn(name="ID_SOMETHING") 如果未指定@JoinColumn則這兩部分列名稱news_images是Hibernate創建的news_images表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM