O problema que me ocorre é o seguinte, tenho um bean e no construtor ele carrega um objeto ( Pendencia ) no banco de dados para alteração, essa pendencia tem um cliente, se eu não inicializo o cliente recebo um nullpointer, e se eu inicializo o cliente recebo a seguinte mensagem:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: modelo.entidade.Cliente
Quando eu faço pendencia.setCliente(new Cliente())
; o hibernate tenta salvar esse objeto no banco.
Alguém já passou por isso? Como procedo?
Codigo
if (pagina.endsWith("pendenciaAlterar.xhtml")) {
Dao<Pendencia> pendenciaDao = new Dao(sessao, Pendencia.class);
pendencia = pendenciaDao.load(cod);
if (pendencia.getCliente() == null) {
pendencia.setCliente(new Cliente());
}
}
Boa tarde,
Amigo você poderia postar sua classe modelo mapeada e seus Daos, para poder visualizar seu erro e ajudar você.
Mas esse erro se da geralmente você não anotou no seu atributo algo como :
@ManyToOne(cascade = CascadeType.PERSIST)
Neste relacionamento acontece a mesma coisa…
`public class Setor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private Integer codigo;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
private String descricao;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 1)
private String situacao;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “setor”)
private List pendenciaList;
getter e setters
}`
`
public class Pendencia implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private Integer codigo;
@Column(name = “tempo_estimado”)
@Temporal(TemporalType.TIMESTAMP)
private Date tempoEstimado;
@Column(name = “tempo_realizacao”)
@Temporal(TemporalType.TIMESTAMP)
private Date tempoRealizacao;
@Column(name = “data_cadastro”)
@Temporal(TemporalType.TIMESTAMP)
private Date dataCadastro;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 1)
private String situacao;
@NotNull
@Size(min = 1, max = 100)
private String titulo;
@JoinColumn(name = “versao_codigo”, referencedColumnName = “codigo”)
@ManyToOne
private Versao versao;
@JoinColumn(name = “cliente_codigo”, referencedColumnName = “codigo”)
@ManyToOne
private Cliente cliente;
@JoinColumn(name = “usuario_realizacao”, referencedColumnName = “codigo”)
@ManyToOne
private Usuario usuarioRealizacao;
@JoinColumn(name = “usuario_cadastro”, referencedColumnName = “codigo”)
@ManyToOne
private Usuario usuarioCadastro;
@JoinColumn(name = “tipo_prioridade_codigo”, referencedColumnName = “codigo”)
@ManyToOne(optional = false)
private TipoPrioridade tipoPrioridade;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “pendencia”)
private List mensagemList;
@JoinColumn(name = “sistema_codigo”, referencedColumnName = “codigo”)
@ManyToOne(optional = true)
private Sistema sistema;
@JoinColumn(name = “setor_codigo”, referencedColumnName = “codigo”)
@ManyToOne(cascade = CascadeType.PERSIST, optional = true)
private Setor setor;
getters e setters
}`