2016-09-15 13 views
1

サイト、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」「でマッピングされた」ターゲット・エンティティの属性に解決することはできません。

私のコードで何が間違っていますか?

+0

の(大文字に注意)@OneToMany(mappedBy = "groupIp",...を置きますか? 'Site'クラスは1対多の関係があると定義しているので、これらの行をマップするためのテーブルを作成するので、これを使う必要はありません。あなたがクラス間の一方向の関係を達成しようとしているなら、それは間違っています。 [ここ](http://stackoverflow.com/questions/12038380/how-to-define-unidirectional-onetomany-relationship-in-jpa)を参照してください。 – px06

+1

mappedBy = "groupip"をmappedBy = "groupIp"に置き換えます –

+0

@ px06ここで、サイトとグループの関係を一方向にしたいと述べましたか?また、双方向の関係が必要な場合は、両辺をマッピングする必要がありますが、関係の所有者にする必要があることにも注意してください。 – Thomas

答えて

4

関係に配置する必要があるmappedBy名は、表属性ではなくクラス属性の名前です。あなたが `` GroupIP`の@ ManyToOne`を使用しているのはなぜ

は、だからではなく、@OneToMany(mappedBy = "groupip",...

+0

あなたの仕事は大変です。しかし、 'HttpServletResponse'では、' Groups'の 'Groups'を取得しましたが、' Groups'の 'Ips'は取得しませんでした。 –

+0

HTMLフォームからデータを送信しているとします。 http://stackoverflow.com/questions/24658195/trouble-passing-a-list-object-as-hidden-variable-from-jsp-to-servletをご覧ください – carborgar

関連する問題