@Entity@Table(name="a")public class A {@Idprivate String id;private String name;@ManyToMany(targetEntity=C.class,cascade={CascadeType.ALL},mappedBy="a")private List c=new ArrayList();@ManyToMany(targetEntity=B.class,cascade={CascadeType.ALL})@JoinTable(name="a_b",joinColumns=@JoinColumn(name="a_id"),inverseJoinColumns=@JoinColumn(name="b_id"))private List b=new ArrayList();public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List getC() {return c;}public void setC(List c) {this.c = c;}public List getB() {return b;}public void setB(List b) {this.b = b;}}@Entity@Table(name="b")public class B {@Idprivate String id;private String name;@ManyToMany(targetEntity=A.class,cascade={CascadeType.ALL},mappedBy="b")private List a=new ArrayList();@ManyToMany(targetEntity=C.class,cascade={CascadeType.ALL})@JoinTable(name="b_c",joinColumns=@JoinColumn(name="b_id"),inverseJoinColumns=@JoinColumn(name="c_id"))private List c=new ArrayList();public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List getA() {return a;}public void setA(List a) {this.a = a;}public List getC() {return c;}public void setC(List c) {this.c = c;}}@Entity@Table(name="c")public class C {@Idprivate String id;private String name;@ManyToMany(targetEntity=A.class,cascade={CascadeType.ALL})@JoinTable(name="c_a",joinColumns=@JoinColumn(name="c_id"),inverseJoinColumns=@JoinColumn(name="a_id"))private List a=new ArrayList();@ManyToMany(targetEntity=B.class,cascade={CascadeType.ALL},mappedBy="c")private List b=new ArrayList();public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List getA() {return a;}public void setA(List a) {this.a = a;}public List getB() {return b;}public void setB(List b) {this.b = b;}}