Jakarta ee 如何在JPA中持久化具有集合属性的Bean?
我有以下实体类:Jakarta ee 如何在JPA中持久化具有集合属性的Bean?,jakarta-ee,jpa,persistence,Jakarta Ee,Jpa,Persistence,我有以下实体类: 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;
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;
}
它执行,但usuario_grupo表中没有寄存器
也就是说,usuario在表grupo中注册,grupo在表grupo中已经存在,但是usuario\u grupo没有
你知道我该怎么做吗
注意:有些名字是葡萄牙语的。JPA不喜欢收藏。它适用于集合无序集合、列表有序集合,我相信我还不需要HashMap,所以我不确定
如果您的bean必须具有Collection属性,请将其设置为transient并创建一个新的attibute get和set方法,至少它可以将该集合作为集合或列表进行管理。我的猜测是,您没有将对象添加到集合关系的两侧,因此它们不会被写入。您的代码非常长。请提供一个复制问题的答案。我编辑了这篇文章以隐藏无用的代码。不幸的是,这个答案不正确。集合属性正常,顺便说一下,这是使用NetBeans向导时的默认选择。OP问题是由其他完全错误的东西引起的。也许讨论中的JPA实现在集合字段方面有一些问题,但是如果是这样的话,它就不是一个兼容的实现了。。。而且OP没有提到正在使用什么。
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;
}
entityManager.persist(usuario);