XDoclet para Hibernate

13 respostas
aborges

Fala galerinha, blz???

Será q alguem poderia me dizer qual tag do XDoclet gera um HBM com um codigo desse tipo:

<composite-id name... table...> <key-property name... class.../> <key-property name... class.../> </composite-id>

Procurei na net e encontrei ISSO AQUI q nao me animou muito…

Valews…

13 Respostas

aborges

E aih pessoal ???

urubatan

cria uma classe para armazenar os valores da PK, e define uma propriedade do objeto deste tipo,
só isto :slight_smile:

aborges
"urubatan":
cria uma classe para armazenar os valores da PK, e define uma propriedade do objeto deste tipo, só isto :-)

Eu fiz isso... Mas qual tag eu coloco no campo para q ele saiba q aquele eh o composite-id?? Exemplo:

class ABC{

   ...

   //Supondo q minha classe com a chave seja PK
   /**
   @QUAL-TAG-COLOCAR-AQUI??
   */
   public PK getId(){
       return this.id;
   }

   ...

}
urubatan

@hibernate.id

aborges

Nossa!!! Eh igual ao ID normal… Pq nao testei esse…

Cara, eu bati tanto a cabeca e nao testei justo esse!!

Valew

aborges

Soh teve um probleminha…

Ele nao colocou os property-keys…

<composite-id name="id" class="teste.PK"/>
urubatan

é por que você esqueceu de colocar “@hibernate.property” nos getters da classe que representa sua PK
no caso, nos metodos getXXX da classe teste.PK

aborges

Olha o q eu achei…

http://opensource.atlassian.com/projects/xdoclet/browse/XDT-830

urubatan

isto ai não é para id, é para collection index :slight_smile:
tenta colocar as tags property na classe PK que vai funcionar beleza :slight_smile:

aborges

Eu fiz o q vc sugeriu e funcionou … Tks…

Em relacao ao link, ele tem uma tag para property-key sim…

@hibernate.key-property which maps to <key-property> which is used inside a
<composite-index> instead of a regular <property> tag.

urubatan

sim, mas property key de um composite-index, e não property key de um composite-id
é para definir o indice de uma colection e não a PK de uma classe :slight_smile:

aborges

Vc tem razao :oops:

Valeu pelo help

[]'s

Alexandre

Fiz o que vocês indicaram, mas quando fui gerar os arquivos de mapeamento, com o Maven, obtive o erro abaixo. Alguém ja passou por isso?

ERROR &#91;main&#93; &#40;TemplateEngine.java&#58;573&#41; - Invoking method failed&#58; xdoclet.modules
.hibernate.HibernateTagsHandler.ifHasCompositeId, line=107 of template file&#58; jar
&#58;file&#58;\glb17corp	ecnologiaisp
epositoryxdocletjarsxdoclet-hibernate-modu
le-1.2.jar!/xdoclet/modules/hibernate/resources/hibernate.xdt
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0&#40;Native Method&#41;
        at sun.reflect.NativeMethodAccessorImpl.invoke&#40;NativeMethodAccessorImpl.java&#58;39&#41;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke&#40;DelegatingMethodAccessorImpl.java&#58;25&#41;
        at java.lang.reflect.Method.invoke&#40;Method.java&#58;324&#41;
        at xdoclet.template.TemplateEngine.invoke&#40;TemplateEngine.java&#58;635&#41;
        at xdoclet.template.TemplateEngine.invokeMethod&#40;TemplateEngine.java&#58;561&#41;

        at xdoclet.template.TemplateEngine.invokeBlockMethod&#40;TemplateEngine.java&#58;959&#41;
        at xdoclet.template.TemplateEngine.handleBlockTag&#40;TemplateEngine.java&#58;926&#41;
        at xdoclet.template.TemplateEngine.handleTag&#40;TemplateEngine.java&#58;466&#41;
        at xdoclet.template.TemplateEngine.generate&#40;TemplateEngine.java&#58;347&#41;
        at xdoclet.template.TemplateEngine.start&#40;TemplateEngine.java&#58;414&#41;
        at xdoclet.TemplateSubTask.startEngine&#40;TemplateSubTask.java&#58;560&#41;
        at xdoclet.TemplateSubTask.generateForClass&#40;TemplateSubTask.java&#58;767&#41;
        at xdoclet.TemplateSubTask.startProcessPerClass&#40;TemplateSubTask.java&#58;667&#41;
        at xdoclet.TemplateSubTask.startProcess&#40;TemplateSubTask.java&#58;594&#41;
        at xdoclet.XmlSubTask.startProcess&#40;XmlSubTask.java&#58;198&#41;
        at xdoclet.modules.hibernate.HibernateSubTask.execute&#40;HibernateSubTask.java&#58;123&#41;
        at xdoclet.XDocletMain.start&#40;XDocletMain.java&#58;48&#41;
        at xdoclet.DocletTask.start&#40;DocletTask.java&#58;464&#41;
        at xjavadoc.ant.XJavadocTask.execute&#40;XJavadocTask.java&#58;110&#41;
        at org.apache.tools.ant.Task.perform&#40;Task.java&#58;341&#41;
        at org.apache.commons.jelly.tags.ant.AntTag.doTag&#40;AntTag.java&#58;232&#41;
        at org.apache.commons.jelly.impl.TagScript.run&#40;TagScript.java&#58;279&#41;
        at org.apache.commons.jelly.impl.ScriptBlock.run&#40;ScriptBlock.java&#58;135&#41;
        at org.apache.commons.jelly.TagSupport.invokeBody&#40;TagSupport.java&#58;233&#41;
        at com.werken.werkz.jelly.GoalTag$1.performAction&#40;GoalTag.java&#58;128&#41;
        at com.werken.werkz.Goal.fire&#40;Goal.java&#58;639&#41;
        at com.werken.werkz.Goal.attain&#40;Goal.java&#58;575&#41;
        at com.werken.werkz.Goal.attainPrecursors&#40;Goal.java&#58;488&#41;
        at com.werken.werkz.Goal.attain&#40;Goal.java&#58;573&#41;
        at com.werken.werkz.WerkzProject.attainGoal&#40;WerkzProject.java&#58;193&#41;
        at com.werken.werkz.jelly.AttainGoalTag.doTag&#40;AttainGoalTag.java&#58;134&#41;
        at org.apache.maven.jelly.tags.werkz.LazyAttainGoalTag.doTag&#40;LazyAttainGoalTag.java&#58;107&#41;
        at org.apache.commons.jelly.impl.TagScript.run&#40;TagScript.java&#58;279&#41;
        at org.apache.commons.jelly.impl.ScriptBlock.run&#40;ScriptBlock.java&#58;135&#41;
        at org.apache.commons.jelly.TagSupport.invokeBody&#40;TagSupport.java&#58;233&#41;
        at com.werken.werkz.jelly.PreGoalTag$1.firePreGoal&#40;PreGoalTag.java&#58;87&#41;
        at com.werken.werkz.Goal.firePreGoalCallbacks&#40;Goal.java&#58;691&#41;
        at com.werken.werkz.Goal.fire&#40;Goal.java&#58;616&#41;
        at com.werken.werkz.Goal.attain&#40;Goal.java&#58;575&#41;
        at org.apache.maven.plugin.PluginManager.attainGoals&#40;PluginManager.java&#58;448&#41;
        at org.apache.maven.MavenSession.attainGoals&#40;MavenSession.java&#58;348&#41;
        at org.apache.maven.cli.App.doMain&#40;App.java&#58;543&#41;
        at org.apache.maven.cli.App.main&#40;App.java&#58;1109&#41;
        at sun.reflect.NativeMethodAccessorImpl.invoke0&#40;Native Method&#41;
        at sun.reflect.NativeMethodAccessorImpl.invoke&#40;NativeMethodAccessorImpl.java&#58;39&#41;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke&#40;DelegatingMethodAccessorImpl.java&#58;25&#41;
        at java.lang.reflect.Method.invoke&#40;Method.java&#58;324&#41;
        at com.werken.forehead.Forehead.run&#40;Forehead.java&#58;551&#41;
        at com.werken.forehead.Forehead.main&#40;Forehead.java&#58;581&#41;
Caused by&#58; java.lang.NullPointerException
        at xdoclet.modules.hibernate.HibernateTagsHandler.hasCompositeId_Impl&#40;HibernateTagsHandler.java&#58;529&#41;
        at xdoclet.modules.hibernate.HibernateTagsHandler.ifHasCompositeId&#40;HibernateTagsHandler.java&#58;140&#41;
        ... 50 more
Criado 15 de junho de 2004
Ultima resposta 3 de nov. de 2004
Respostas 13
Participantes 3