如何使用JPA在Hibernate中的多个列表中存储相同的实体

时间:2011-03-07 10:21:22

标签: mysql hibernate jpa

我是Hibernate的新手,所以这对你们来说可能是一项轻松的任务。

正如主题所说,我试图在多个列表中引用同一个实体。但是,当我尝试这样做时,我得到一个例外说:“对'key_id''重复输入'5'”。 我用Google搜索但无法找到解决问题的方法。

我有一个名为MilitaryUnitData的实体,如下所示:

@Entity
public class MilitaryUnitData implements IMovable{
   private long Id;

//snip

   @Id
   @GeneratedValue(strategy=GenerationType.TABLE)
   public long getId() {
      return Id;
   }
   public void setId(long id) {
      Id = id;
   }

       //snip
}

和我想要存储单位的城市。

@Entity
public class CityData {

private Collection<MilitaryUnitData> military = new ArrayList<MilitaryUnitData>();
private String name;

//snip

@Id
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

@OneToMany
   @Column(nullable=false)
   public Collection<MilitaryUnitData> getMilitary() {
      return military;
   }

   public void setMilitary(Collection<MilitaryUnitData> military) {
      this.military = military;
   }

//snip
}

当我想要同时将一个单位放入两个城市时,会出现问题。 如何更改映射以实现此目的?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

  

我正在尝试在多个列表中引用同一个实体   在查看您的代码后,我认为您的意思是,在MilitaryUnitData多个CityData中使用了相同的@ManyToMany

如果这是正确的,那么实船是一艘M:N关系船,您需要使用@OneToMany代替{{1}}。