--- Eric Mckenna <[EMAIL PROTECTED]> wrote:
> I am trying to get this:
> <hibernate-mapping>
> <class name="model.trial.ECPromoECItemRelation"
> table="ECPromoECItem">
> <composite-id name="relation"
> class="model.trial.ECPromoECItemRelation">
> <key-property name="promoId" type="int"
> column="promoId"/>
> <key-property name="itemId" type="int"
> column="itemId"/>
> </composite-id>
> </class>
> </hibernate-mapping>
>
> But keep getting this: (generated from class below)
>
> <hibernate-mapping>
> <class name="model.trial.ECPromoECItemRelation"
> table="ECPromoECItem">
> <composite-id name="relation"
> class="model.trial.ECPromoECItemRelation">
> <key-property name="promoId" type="int"
> column="promoId"/>
> <key-property name="itemId" type="int"
> column="itemId"/>
> </composite-id>
>
> <property name="promoId" type="int"
> column="promoId"/>
> <property name="itemId" type="int"
> column="itemId"/>
> </class>
> </hibernate-mapping>
Well, you defined hibernate properties in your
main class, and you got them generated. XDoclet did
what you asked for :)
> Xdoclet is only doing what I tell it to do, so the
> way I have my composite
> class set up is probably the problem. Just
> frustrating since all i had to
> do before (xdoclet beta2) was merge in the composite
> id element ;)
Well I recall that there was merge point for composite
key. BUt not it' supported by xdoclet .)
> here's the class for reference
> /**
> * @hibernate.class
> * table="ECPromoECItem"
> */
> public class ECPromoECItemRelation implements
> Serializable {
>
> private int promoId = -1;
> private int itemId = -1;
> public ECPromoECItemRelation() {}
Well, you should provide default constructor without
parameters. And beany getter/setter - hibernate will
use them to init your class off database. If you need
further initialization consider implementing
lifecycle.
> /**
> * Constructs the Releation with the promoId and
> itemId.
> * @param promoId
> * @param itemId
> */
> public ECPromoECItemRelation(long promoId, long
> itemId)
> {
> String promoIdStr = String.valueOf(promoId);
> setPromoId(Integer.parseInt(promoIdStr));
>
> String itemIdStr = String.valueOf(itemId);
> setItemId(Integer.parseInt(itemIdStr));
> }
>
> /**
> * This is a work around to enable xdoclet to
> correctly generate the
> hibernate
> * xml mapping file.
> * @hibernate.id
> * generator-class="assigned"
> * @return this object
> */
> private ECPromoECItemRelation getRelation(int
> promoId, int itemId) {
> return new ECPromoECItemRelation(promoId,
> itemId);
> }
This is kind of wrong. This getter shall be without
any parameters. Just getter / setter for your
composite ID class. Hibernate will not use this
method.
( I hope :) )
> private void setRelation(ECPromoECItemRelation
> relation)
> {}
id value shall be stored somewhere...
Well, now to your PK class. It shall be:
- javabean with default constructor
- getter / setter pairs for identity properties
- it shall have @hibernate.property tags on those
properties.
regards,
=====
----[ Konstantin Pribluda ( ko5tik ) ]----------------
Zu Verst�rkung meines Teams suche ich ab Sofort einen
Softwareentwickler[In] f�r die Festanstellung.
Arbeitsort: Mainz
Skills: Programieren, Kentnisse in OpenSource-Bereich
----[ http://www.pribluda.de ]------------------------
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user