サイト、GoupIP、IPの3つのクラスがありますJPA OneToMany MappedBy関係
サイトには1つまたは複数のGrouIPがあります。 GroupIPには1つまたは複数のIPがあります。ここで
コードです:サイト
@Entity
@Table(name = "site")
public class Site implements Serializable {
private Set<GroupIp> groups;
@OneToMany(mappedBy = "site", fetch = FetchType.EAGER, cascade =CascadeType.ALL)
public Set<GroupIp> getGroups() {
return groups;
}
public void setGroups(Set<GroupIp> groups) {
this.groups = groups;
}
}
GroupIP
@Entity
@Table(name = "groupip")
public class GroupIp implements Serializable {
private Set<Ip> ips;
private Site site;
@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name = "site_id")
public Site getSite() {
return site;
}
@OneToMany(mappedBy = "groupip", fetch = FetchType.EAGER, cascade =CascadeType.ALL)
public Set<Ip> getIps() {
return ips;
}
public void setIps(Set<Ip> ips) {
this.ips= ips;
}
}
IP
GroupIpクラスで、私が取得メートル:属性「IPS」で
を、値「groupip」「でマッピングされた」ターゲット・エンティティの属性に解決することはできません。
私のコードで何が間違っていますか?
の(大文字に注意)
@OneToMany(mappedBy = "groupIp",...
を置きますか? 'Site'クラスは1対多の関係があると定義しているので、これらの行をマップするためのテーブルを作成するので、これを使う必要はありません。あなたがクラス間の一方向の関係を達成しようとしているなら、それは間違っています。 [ここ](http://stackoverflow.com/questions/12038380/how-to-define-unidirectional-onetomany-relationship-in-jpa)を参照してください。 – px06mappedBy = "groupip"をmappedBy = "groupIp"に置き換えます –
@ px06ここで、サイトとグループの関係を一方向にしたいと述べましたか?また、双方向の関係が必要な場合は、両辺をマッピングする必要がありますが、関係の所有者にする必要があることにも注意してください。 – Thomas