Ich habe drei Klassen, Standort, GoupIP und IPJPA OneToMany mappedBy Beziehungen
A-Site hat eine oder mehrere GrouIPs. Ein GroupIP hat eine oder mehrere IPs.
Hier ist der Code:
Website
@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
@Entity
@Table(name = "ip")
public class Ip implements Serializable {
private GroupIp groupIp;
@ManyToOne(targetEntity = GroupIp.class,cascade = CascadeType.MERGE)
@JoinColumn(name = "groupip_id", nullable=false)
public GroupIp getGroupIp() {
return groupIp;
}
public void setGroupIp(GroupIp groupIp) {
this.groupIp = groupIp;
}
}
Auf GroupIp Klasse, ich bin immer:
In Attribute ‚ips‘, das kann „abgebildet durch“ Wert ‚groupip‘ auf der Zieleinheit auf ein Attribut nicht aufgelöst werden.
Was ist falsch an meinem Code ??
Warum verwenden Sie '@ ManyToOne' in' GroupIP'? Es ist nicht notwendig, das zu verwenden, da die 'Site'-Klasse definiert hat, dass es eine Eins-zu-viele-Beziehung gibt, daher wird eine Tabelle erstellt, um diese Zeilen zuzuordnen. Wenn Sie versuchen, eine unidirektionale Beziehung zwischen Ihren Klassen zu erreichen, dann tun Sie es falsch. Siehe [hier] (http://stackoverflow.com/questions/12038380/how-to-define-unidirectional-onetomany-relationship-in-jpa). – px06
replace mappedBy = "groupip" durch mappedBy = "groupIp" –
@ px06 wo hat er angegeben, dass er möchte, dass die Site-Groupip-Relation unidirektional ist? Beachten Sie auch, dass Sie, wenn Sie eine bidirektionale Beziehung haben möchten, beide Seiten abbilden müssen, aber einen zum Besitzer der Beziehung machen müssen. – Thomas