Mapeamento de Classe e Super Classe

2 respostas
L

Boas pessoal.

Estou a tentar desenvolver uma aplicação que usa struts2, hibernate e spring.

Já consegui alguns resultados.
No entanto, estou com um problema em inserir registos na base de dados.

O erro que dá é o seguinte:
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:622)

Eu tenho o seguinte codigo:

public class Carro{
private int id;
private string marca;
private Motor motor;
blá blá blá;
} 

public class Motor{
private int id;
private int cavalos;
}

A relação na base de dados é de 1<->1 (claro....) e por isso existe na tabela carro, como chave estrangeira o id do motor correspondente.

O que eu quero é que quando crio um novo carro ele insira tudo nas tabelas correspondentes. O problema penso que está a gerar o id do motor e a inseri-lo na coluna certa da tabela carro.

&lt;s&#58;form method=&quot;post&quot; action=done&gt;
&lt;h4&gt;Carro&lt;h4&gt;
&lt;s&#58;textfield name=&quot;carro.marca&quot;/&gt;

&lt;h4&gt;Motor&lt;/h4&gt;
&lt;s&#58;textfield name=&quot;carro.motor.cavalos&quot;/&gt;

&lt;s&#58;submit name=&quot;method=submit&quot; value=....&gt;

Alguém me pode ajudar?
Obrigado desde já.

2 Respostas

C

l1nk,

Este é o mesmo caso do seu outro post relacionado a Pessoa e Carro.

Note bem! O que vc quer é que o objeto da classe carro gerencie motor, para isso vc precisa definir no mapeamento Carro.hbm.xml cascade=“all”

&lt;many-to-one name="motor" column="motor_id" cascade="all"
         class="com.testecenter.model.Motor" lazy="false"/&gt;

@braços,
Cleiton

L

Obrigado pela ajuda.
Vou experimentar a tua sugestão.

Por favor, dá uma olhada no outro post que eu coloquei sobre List e Struts2. Tá um pouco mais acima :grin:

Criado 24 de outubro de 2007
Ultima resposta 29 de out. de 2007
Respostas 2
Participantes 2