Problema com hibernate

3 respostas
javahibernate
ale0790

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());
        }
}

3 Respostas

R

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)

R

(cascade = CascadeType.PERSIST)

ale0790

Neste relacionamento acontece a mesma coisa…

`public class Setor implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

private Integer codigo;

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@NotNull

<a class="mention" href="/u/size">@Size</a>(min = 1, max = 50)

private String descricao;

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@NotNull

<a class="mention" href="/u/size">@Size</a>(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)

<a class="mention" href="/u/basic">@Basic</a>(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;

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@NotNull

<a class="mention" href="/u/size">@Size</a>(min = 1, max = 1)

private String situacao;

@NotNull

<a class="mention" href="/u/size">@Size</a>(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
}`

Criado 4 de julho de 2016
Ultima resposta 25 de jul. de 2016
Respostas 3
Participantes 2