JPA OneToMany MappedBy关系

时间:2016-09-15 08:18:24

标签: java jpa

我有三个类,Site,GoupIP和IP

网站有一个或多个GrouIP。 GroupIP有一个或多个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

@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;
}

}

在GroupIp类上,我得到了:

在属性'ips'中,“映射依据”值'groupip'无法解析为目标实体上的属性。

我的代码怎么了?

1 个答案:

答案 0 :(得分:4)

您必须在关系中放置的mappedBy名称是类属性的名称,而不是表名。

所以放<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mymodule"> <application android:allowBackup="true" android:label="@string/app_name" android:name="com.example.mymodule.App"> </application> </manifest> (注意大写)而不是@OneToMany(mappedBy = "groupIp",...

相关问题