Hibernate - problemas com relacionamento

1 resposta
pascoajr

Pois é galera... estou na luta com os relacionamentos aki....
Vou explicar brevemente o que tenho que relacionar...
por exemplo: tenho uma tabela para persistir os itens (Pk IDITEM) do estoque, uma para persistir os produtos (Pk IDPRODUTO) (note que faço distinção.... produto é composto por um ou mais itens) e a outra para guardar a composição desses produtos... dessa forma estou quebrando o relacionamento n:n em duas 1:n n:1. Para isso construí os mapeamentos da seguinte forma:

Produto:
<hibernate-mapping>
<class name="PRODUTO">

	<id name="IDPRODUTO">
		<generator class="increment"></generator>
	</id>
	
	<property name="DESCRICAO"></property>
	<property name="PRECOCUSTO"></property>
	<property name="PRECOVENDA"></property>
	<property name="CODBARRAS"></property>
	<property name="UNIDADE"></property>
	<property name="PESO"></property>
	<property name="DATACAD"></property>
	<property name="SITUACAO"></property>
	
	<many-to-one name="CATEGORIA" 
		class="CATEGORIA" 
		column="IDCATEGORIA">
	</many-to-one>
	
	<set name="itens" table="COMPOSICAO">
		<key column="IDPRODUTO"></key>
		<many-to-many class="ITEM"
		column="IDITEM">
	                </many-to-many>
	</set>
	
</class>
</hibernate-mapping>
Item:
<hibernate-mapping>
<class name="ITEM">
	
	<id name="IDITEM">
		<generator class="increment"></generator>
	</id>
	<property name="DESCRICAO"></property>
	<property name="PRECOCUSTO"></property>
	<property name="QUANTIDADE"></property>
	<property name="ESTOQUEMIN"></property>

	<set name="produtos" table="COMPOSICAO" inverse="true">
		<key column="IDITEM"></key>
		<many-to-many class="PRODUTO"
		column="IDPRODUTO">
		</many-to-many>
	</set>
	
</class>
</hibernate-mapping>

e finalmente o mapeamento da composição:

Composicao:

<hibernate-mapping>
	<class name = "COMPOSICAO">
		<composite-id name="ID" class="IDCOMPOSICAO">
			<key-many-to-one class="ITEM" name="IDITEM"></key-many-to-one>
			<key-many-to-one class="PRODUTO" name="IDPRODUTO"></key-many-to-one>
		</composite-id>
		<property name="quantidade"></property>	
	</class>
</hibernate-mapping>

para as classes a única diferença para o que estou acostumado é que criei a classe IDCOMPOSICAO para indicar a chave desse relacionamento...

----agora o problema:
suponha que ainda não tenha nenhum registro na tabela composição e alguns produtos e itens cadastrados....
ao tentar inserir um novo registro com os identificadores de PRODUTO E ITEM diferentes ele não aceita.... só aceita assim:

ex1.
PRODUTO: 1
ITEM: 1
QUANTIDADE: 10

ex2. se eu tentar na primeira vez inserir
PRODUTO: 1
ITEM: 2
QUANTIDADE: 10

ele dá erro.... mas depois que eu inseri o ex1 ele deixa inserir qualquer outro......
o que eu faço...!!?! SOCORRO!!!

1 Resposta

pascoajr

Solucionado!!!

Criado 13 de julho de 2005
Ultima resposta 13 de jul. de 2005
Respostas 1
Participantes 1