我有以下实体类:
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "Id")
private Integer id;
@Size(max = 255)
@Column(name = "Senha")
private String senha;
@Size(max = 255)
@Column(name = "Nome")
private String nome;
@ManyToMany(mappedBy = "usuarioCollection", fetch = FetchType.EAGER)
private Collection<Grupo> grupoCollection;
}
和
public class Grupo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "Id")
private Integer id;
@Size(max = 255)
@Column(name = "Nome")
private String nome;
@JoinTable(name = "usuario_grupo", joinColumns = {
@JoinColumn(name = "GrupoID", referencedColumnName = "Id")}, inverseJoinColumns = {
@JoinColumn(name = "UsuarioID", referencedColumnName = "Id")})
@ManyToMany(fetch = FetchType.EAGER)
private Collection<Usuario> usuarioCollection;
}
这些代码是由netbeans生成的。
当我尝试用JPA持续它
时entityManager.persist(usuario);
它执行,但usuario_grupo表中没有寄存器。
即usuario已在表中注册(grupo已经存在于表grupo中),但是usuario_grupo没有。
你知道我怎么能这样做吗?
注意:有些名字是葡萄牙语。
答案 0 :(得分:1)
我的猜测是你没有将对象添加到集合关系的两边,所以它们不会被写入。
答案 1 :(得分:-2)
JPA不喜欢Collection
。它适用于Set
(无序集合),List
(有序集合),我也相信HashMap
(我不需要它,所以我不确定)。
如果您的bean 必须具有Collection
属性,请将其设为transient
并创建一个新的属性(至少是get和set方法)来管理Collection
1}}作为Set
或List
。