Mapeamento no Hibernate

Olá Pessoal,

Estou precisando MUUUUITO de uma ajuda com um mapeamento no Hibernate. ( Pra postar mensagem em forum de Java as 4 da manhã tenho que estar precisando mesmo, né… :? )

Tenho a seguinte situação.

TABELA_A
ID_TABELA_A

TABELA_B
ID_TABELA_B

TABELA_C
 ID_TABELA_A ( FK )
 ID_TABELA_B ( FK )
 VL_QUALQUER_TABELA_C double

 As colunas ID_TABELA_A e ID_TABELA_B serão foreign keys com constraints na tabela C, e as 2 colunas juntas deverão formar o índice único da tabela.

 Além das foreign keys, a TABELA_C terá outra coluna de valor double.  Ela não necessita de identity, mas caso seja possível gerar, seria bom.

 Se alguém puder ajudar este novato a esclarecer essa dúvida, eu ficaria muito grato.  :D 

Obrigado,

Sannon

Sua dúvida é como fazer para colocar um mapeamento identity numa coluna com campo double?

Não. Esquecendo o identity, ele não é indispensável no meu caso.

Minha dúvida é como mapear o xml para uma a situação a da tabela C.

Basicamente eu não consegui criar uma tabela com as 2 foreign keys sendo chave única no mesmo índice e tendo e outro campo qualquer na tabela ( double, long, etc… ).

Obrigado,

Sannon

É isso?

<hibernate-mapping package="getlink.jobmanager.candidato">
	<class name="ClasseC" table="TABELA_C" lazy="true">

		<id name="id" column="ID" type="java.lang.Integer">
			<generator class="identity" />
		</id>

		<many-to-one name="classeA" class="meu.pacote.ClasseA"
			column=" ID_TABELA_A"/>
		
		<many-to-one name="classeB" class="meu.pacote.ClasseB"
			column=" ID_TABELA_B"/>

	</class>
</hibernate-mapping>

e na ClasseC

public class ClasseC
{
	private Integer id;
	private ClasseA classeA;
	private ClasseB classeB;

	// etc
}

É quase isso.

		<many-to-one name="classeA" class="meu.pacote.ClasseA"
			column=" ID_TABELA_A"/>
		
		<many-to-one name="classeB" class="meu.pacote.ClasseB"
			column=" ID_TABELA_B"/>

Agora como eu coloco as 2 colunas acima como sendo 1 índice único na TABELA C ?

Preciso também colocar outros campos na TABELA_C.

Valeu a ajuda, Lipe! :slight_smile:

Ahhhh … não sei se é possível fazer isso com mapeamento usando Hibernate 2.x

Você pode usar um filtro do Hibernate, ou alguma trigger.

Quanto a campos extras na ClasseC, basta declarar as outras tags <property> normalmente :smiley:

Ok. Bom, vou colocar a pergunta no forum do Hibernate pra ver o que acontece…

Quando tiver alguma resposta eu coloco aqui no forum pra ficar registrado.

Obrigado!

[]'s

Sannon

<composite-id>
     <key-many-to-one name="TABELA_A" 
                           column="ID_TABELA_A"  
                           class="Tabela_A"/>
     <key-many-to-one name="TABELA_B" 
                           column="ID_TABELA_B"
                           class="TABELA_B"/>
</composite-id>

<property
	name="VL"
	column="VL"
	type="double"
/>

Acho que assim funciona… pelo menos o banco de dados foi gerado corretamente.

[]´s

Sannon