Estou com um problema ao realizar um insert utilizando JPA2
retorna esta msg de erro:
[EL Warning]: 2010-09-09 12:15:34.14--UnitOfWork(29239443)--java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: br.com.model.persistence.entity.Empresa[empresaId=null].
Empresa empresa = EmpresaDAO.getInstance().getById(1);
Usuario usuario = new Usuario();
usuario.setEmpresa(empresa);
//usuario.set... outros atributos
usuario.getPerfilUsuarioList().add(new PerfilUsuario(usuario.getUsuarioId(), ConstantsPerfil.USUARIO));
UsuarioDAO.getInstance().insert(usuario);
quando eu retiro a linha usuario.getPerfilUsuarioList().add(new PerfilUsuario(usuario.getUsuarioId(), ConstantsPerfil.USUARIO));
ele funciona normalmente,
o estranho é que na exception ele reclama da empresa, sendo que eu estou mexendo na tabela perfil_usuario.
public class Usuario implements Serializable{
@JoinColumn(name = "EMPRESA_ID", referencedColumnName = "EMPRESA_ID")
@ManyToOne
private Empresa empresa;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario", orphanRemoval= true)
private List<PerfilUsuario> perfilUsuarioList;
...
Alguem tem sabe o que esta acontecendo?
O problema é que eu passava apenas o id do usuario, que era nulo :
usuario.getPerfilUsuarioList().add(new PerfilUsuario(usuario.getUsuarioId(), ConstantsPerfil.USUARIO));
mudei para :
PerfilUsuario perfilUsuario = new PerfilUsuario();
perfilUsuario.setUsuario(usuario);
perfilUsuario.getPerfil().setPerfilId(ConstantsPerfil.USUARIO);
usuario.getPerfilUsuarioList().add(perfilUsuario );