0

我有以下实体类:

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 没有。

你知道我怎么能正确地做到这一点吗?

注意:有些名字是葡萄牙语。

4

2 回答 2

1

我的猜测是您没有将对象添加到集合关系的两侧,因此它们没有被写入。

于 2012-09-04T13:52:48.213 回答
-2

JPA 不喜欢Collection. 它适用于Set(无序集合), List(有序集合),我相信也适用于HashMap(我不需要,所以我不确定)。

如果您的 bean必须具有该Collection属性,请创建它transient并创建一个新的属性(至少是 get 和 set 方法),将其Collection作为Setor进行管理List

于 2012-09-01T14:33:40.600 回答