Quais as tags do hibernatedoclet pra gerar composite-id?
[hibernate] Composite-id xdoclet tag
8 Respostas
Desculpe mas esse link não tem nada sobre o que perguntei. Só tem um exemplinho pobre.
Entrando no site do XDoclet você vai ter uma documentação sobre todos os conjunto de tags suportadas. Em http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html você tem as tags de XDoclet para Hibernate. 
Boa leitura.
Aliás, não sei se também é o caso, mas eis mais uma dica: http://hibernate.org/118.html#A11
Entrando no site do XDoclet você vai ter uma documentação sobre todos os conjunto de tags suportadas. Em http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html você tem as tags de XDoclet para Hibernate.
Boa leitura.
Daniel, obrigado pelo seu empenho mas já vasculhei todos os docs e as tags. Não existe uma tag pra fazer isso. Mas dá pra fazer assim. Foi mal pq não imaginei que tivesse um tópico deste no fórum. Isto só vem confirmar que a base do GUJ está ficando muito boa mesmo.
O modulo de XDoclet para o Hibernate não tem uma tag para composite id. Veja nessa pagina:
Shortcomings
- no support for composite identifiers - we would need to add both a @hibernate.composite-id tag and a @hibernate.column tag
Mas, numa visita ao JIRA, parece que estão implementando isso:
CVS COMMIT LOG:
SUBJECT: [Xdoclet-devel] CVS: xdoclet/modules/hibernate/src/xdoclet/modules/hibernate HibernateTagsHandler.java,1.4,1.5 XDocletModulesHibernateMessages.java,1.4,1.5
XDT-219 - Partial implementation of composite ID support.
valeuz…
Isto esclareceu minha dúvida neste tópico. Vou postar este link lá.
Ok Marcos… a tag então está no forno, logo a gente poderá usar. Apesar do uso das chaves compostas não ser uma boa prática com o hibernate, não gosto da idéia de utilizar surrogate keys em uma tabela que representa a relação muitos-para-muitos.
Estou tendo mais uma dificuldade utilizando o hibernatedoclet pra gerar meus mapeamentos. Agora o problema é o seguinte. Tenho uma relação many-to-many (Filial – MaterialAux) onde fui obrigado a criar uma classe para mapear a tabela que armazena os relacionamentos (RelationshipFilialMaterial) pq possuo mais atributos na tabela. Como já foi discutido até aqui sabemos que o hibernatedoclet não possuí uma tag para composite-id. Neste caso foi necessário (e recomendável tb) criar uma classe que representa minha composite-id. O problema é que neste caso preciso utilizar o elemento <nested-composite-element> (o hibernatedoclet não possui suporte à este elemento). Olhando o xml da classe Filial fica mais fácil compreender:
...
<set
name="materiaisAux"
table="material_aux_fil"
lazy="true"
inverse="false"
cascade="none"
sort="unsorted"
>
<key
column="fil_id"
>
</key>
<composite-element
class="br.com.atmtec.bean.RelationshipFilialMaterialAux"
>
<nested-composite-element class="br.com.atmtec.bean.FilialMaterialAuxPK" name="id">
<many-to-one
name="materialAux"
class="br.com.atmtec.bean.MaterialAux"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="mtaux_id"
not-null="true"
/>
</nested-composite-element>
<many-to-one
name="statusMovimento"
class="br.com.atmtec.bean.StatusMovimento"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
foreign-key="material_aux_fil_stmov_id_fkey"
column="stmov_id"
not-null="true"
/>
</composite-element>
</set>
O elemento <nested-composite-element> eu fiz na mão mesmo. Agora alguém sabe se existe uma forma dele ser gerado pelo hibernatedoclet?