我的代码中有A和B对象的Many To Many关联,关系的B对象在数据库的表“B”中注册,其中有两个列,id和name。问题是我有38个B对象通常用于与A关联,它们的id为1到38,用户可以选择它们,它们不能更改,但有人可以添加对象B并保存它在表B中,带有自动增量id以将其与A关联。所以问题是我如何在保存A时将A与保存或未保存的B对象关联?
这是我的代码: A类
@Entity
@Table(name="A", catalog="sist", schema = "")
public class A implements java.io.Serializable {
@Id
@Basic(optional=false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idA;
@ManyToMany (fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinTable(name="AB", joinColumns={@JoinColumn(name="idA")}, inverseJoinColumns={@JoinColumn(name="idB")})
private List<B> bs = new ArrayList();
}
B组:
@Entity
@Table(name="B", catalog="sist", schema = "")
public class B implements java.io.Serializable {
@Id
@Basic(optional=false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idB;
private String nombre;
@ManyToMany(fetch=FetchType.LAZY, mappedBy="bs")
private List<A> as = new ArrayList();
}
以下是我在DAO类中保存A的方法:
public void actualizarMedida(A a) throws HibernateException {
try {
sesion = sessionFactory.openSession();
tx = sesion.beginTransaction();
sesion.persist(a);
tx.commit();
sesion.flush();
} catch (HibernateException he) {
manejaExcepcion(he);
throw he;
} finally {
sesion.close();
}
}
现在我可以保存新的B对象并将它们与A关联,但我不能将A与现有的B对象关联。有人能帮我吗?提前谢谢。
答案 0 :(得分:0)
使用List<A>
注释对B
实体内的@JoinTable
进行注释,同时提供getter
和setter
s
@JoinTable(name="AB", joinColumns={@JoinColumn(name="idB")})
private List<A>;
//getter and setters.