JPA - 如何在实体中表示多值字段

时间:2017-09-12 21:59:41

标签: java hibernate jpa

我无法决定如何代表发布日期'电影'中的字段JPA中的实体。以this movie为例。类字段看起来像这样:

@Entity
public class Movie {
   private Long id;
   private String name;
   private Director director;
   private List<Writer> writers;
   private List<Actor> actors;
   private List<ReleaseDate> releaseDates;
}

//@Entity ?
class ReleaseDate {
    private String northAmericanReleaseDate;
    private String europeanReleaseDate;
    private String asianReleaseDate;
    // add more locations here
}

如果电影可以有多个发行日期,我不太清楚如何表示它们。上面是我到目前为止,如果一个电影没有在一个位置发布它将是null,暗示没有在该位置发布。

更大的问题是,我不认为ReleaseDate应该是一个实体/班级,因为我不认为它会在一张桌子上排成一行,并且有自己的ID。这里最好的策略是什么?感谢。

2 个答案:

答案 0 :(得分:0)

我认为数据模型不正确(您的问题与JPA没有任何关系)。也许我错了,但我认为,发布日期与电影和大陆(欧洲,美洲,亚洲)或任何其他地理位置有关,对吧?然后事件Release应该是具有成员电影,日期,位置/大陆,国家等的实体。 (电影和位置应该是唯一的。)

拥有一个发布日期和每个位置一个成员字段没有任何意义,使它们为空。相反,位置应该是通用的。

答案 1 :(得分:0)

enum ReleaseLocation {
  NorthAmerica, Europe, Asia;
}

class ReleaseDate {
  private String releaseDate;
  private ReleaseLocation releaseLocation;
}

这样的事情怎么样?