Dúvida Hibernate - update e delete só funciona se eu forçar um commit, pq?

8 respostas
P

Fala feras :smiley:

Tenho uma app rodando com struts2 e meus objetos ‘filhos’ somente são atualizados se eu forçar um commit no método:

public T update(T object) {
		try 
		{
			session = InitSessionFactory.getInstance().getCurrentSession();
			Transaction tx = session.beginTransaction();
			session.merge(object);
			tx.commit();
		} catch (Exception ex) {
			logger.error("Erro ao atualizar objeto: [ " + classe.getSimpleName() + " ]", ex);
		} 
		return object;
	}

Se eu não chamar o Transaction, o update só é feito no objeto pai e não no filho. E se eu deixar dessa maneira, ele acaba zuando o objeto filho pq se eu não exibir algum dado na tela, ele seta pra null aquele valor e faz update nele. Alguém sabe o pq de ocorrer isso?

Segue meu mapeamento:

Objeto ‘Pai’

@OneToOne(mappedBy = "usuarioTO", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private ValidacaoLoginTO validacaoLoginTO;

Objeto ‘Filho’

@OneToOne()
	@JoinColumn(name="Empleados_ID_EMPLEADOS")
	@Cascade(CascadeType.ALL)
	private UsuarioTO usuarioTO;

8 Respostas

C

Seu banco de dados é oracle ?

Christian

Lavieri

geralmente so forçando commit sim… porem, existe como deixar conexões em auto-commit…

que no fim, pra vc q ta programando no nivel la de cima, parece que não é preciso forçar o commit

jyoshiriro

Já conheçe o Full Hibernate Plugin que injeta a Sessão e a Transação Hibernate e fecha e commita ambas, respectivamente, automaticamente ao final da requisição?

Andr_Heidi_Moriya

Olá pessoal,

aproveitando o forum aki to com o seguinte problema,
na hora que eu fazer um delete naum sei porque, mas os campos que eu defino como nullable = false
ele naum deleta, ele da um erro falando que o tal campo é not null e naum deleta

pq isso??

obrigado

jyoshiriro

Tanto no Hibernate como no JPA os métodos “delete” só podem ser aplicados a entidades válidas.

O Motivo? Pergunta para os criadores dessas tecnologias rsrsrsrsr.

Se quiser excluir sem que o objetos esteja válido, só via HQL (Hibernate) ou JPQL (JPA).

JonathanSSantos

Andr?Heidi Moriya:
Olá pessoal,

aproveitando o forum aki to com o seguinte problema,
na hora que eu fazer um delete naum sei porque, mas os campos que eu defino como nullable = false
ele naum deleta, ele da um erro falando que o tal campo é not null e naum deleta

pq isso??

obrigado

Tu define que ele é not null
mais no banco ele ta como not null?
tu criou ele junto com o hibernate?!

jyoshiriro

Amigo, independente do caso dessa entidade… o Hibernate só exclui se o objeto estiver válido (todos os “not null” da vida preenchidos). Faça o teste e comprove.

W

Opa!

Fala povo!

Estou com esse problema alguém sabe como resolver???

mesmo diretório

cfg.xml ==
hbm.xml

Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping

Criado 8 de abril de 2009
Ultima resposta 9 de dez. de 2009
Respostas 8
Participantes 7