The following issue has been updated: Updater: Allan Jones (mailto:[EMAIL PROTECTED]) Date: Thu, 24 Mar 2005 9:41 AM Comment: Patch for current CVS head (03/24/2005) Changes: Attachment changed to patch.diff --------------------------------------------------------------------- For a full history of the issue, see:
http://opensource.atlassian.com/projects/xdoclet/browse/XDT-1312?page=history --------------------------------------------------------------------- View the issue: http://opensource.atlassian.com/projects/xdoclet/browse/XDT-1312 Here is an overview of the issue: --------------------------------------------------------------------- Key: XDT-1312 Summary: Add @hibernate.meta, improve @hibernate.many-to-one, create hibernate-queries-{0}.xml and improve @hibernate.component Type: Bug Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: XDoclet Components: Hibernate Module Versions: 1.3 Assignee: xdoclet-devel (Use for new issues) Reporter: Allan Jones Created: Thu, 24 Mar 2005 9:39 AM Updated: Thu, 24 Mar 2005 9:41 AM Description: ====================================================================== @hibernate.meta + <XDtClass:forAllClassTags tagName="hibernate.meta" superclasses="false"> + <meta + attribute="<XDtClass:classTagValue tagName="hibernate.meta" paramName="attribute" />" + ><XDtClass:classTagValue tagName="hibernate.meta" paramName="value" /></meta> + </XDtClass:forAllClassTags> So, you can specify meta attributes for classes, example: /** * @hibernate.class * @hibernate.meta attribute="storedProcedureName" value="MY_STORED_PROCEDURE" */ public class MyHibernateClass { } <class name="MyHibernateClass"> <meta attribute="storedProcedureName" >MY_STORED_PROCEDURE</meta> </class> ====================================================================== @hibernate.many-to-one <key-many-to-one name="<XDtMethod:propertyName/>" class="<XDtMethod:methodTagValue tagName="hibernate.many-to-one" paramName="class" default="<XDtMethod:methodType/>" />" - column="<XDtMethod:methodTagValue tagName="hibernate.many-to-one" paramName="column" default="<XDtMethod:propertyName/>"/>" - /> + <XDtHibernate:setCurrentTag name="hibernate.many-to-one" mappingElement="key-many-to-one"> + <XDtMerge:merge file="xdoclet/modules/hibernate/resources/hibernate-column.xdt"> + </XDtMerge:merge> + </XDtHibernate:setCurrentTag> So, you can specity multiple columns, example: public class MyHibernateClass { /** * @hibernate.many-to-one * @hibernate.column name="COL_1" * @hibernate.column name="COL_2" * @hibernate.column name="COL_3" */ public OtherClass getOtherClass() { return otherClass; } } <many-to-one name="otherClass" class="OtherClass" cascade="none" outer-join="auto"> <column name="COL_1" /> <column name="COL_2" /> <column name="COL_3" /> </many-to-one> ====================================================================== hibernate-queries-{0}.xml + <XDtMerge:merge file="hibernate-queries-{0}.xml"> + <!-- + To add non XDoclet query mappings, create a file named + hibernate-queries-<XDtClass:className />.xml + containing the additional properties and place it in your merge dir. + --> + </XDtMerge:merge> So, you can define a merge file for queries, example: /** * @hibernate.class */ public class MyHibernateClass { } hibernate-queries-MyHibernateClass.xml <sql-query name="MyHibernateClass.mySQLQuery"> <![CDATA[ SELECT * FROM MYTABLE ]]> </sql-query> ====================================================================== @hibernate.component -> Added hibernate-properties-{0}.xml: <XDtMethod:ifHasMethodTag tagName="hibernate.component"> <component name="<XDtMethod:propertyName />" class="<XDtMethod:methodTagValue tagName="hibernate.component" paramName="class" default="<XDtMethod:methodType/>"/>" > <XDtHibernate:setColumnPrefix prefix="<XDtMethod:methodTagValue tagName='hibernate.component' paramName='prefix' default=''/>"> <XDtClass:pushClass value="<XDtMethod:methodTagValue tagName='hibernate.component' paramName='class' default='<XDtMethod:methodType/>' />"> <XDtMethod:forAllMethods superclasses="true" sort="true"> <XDtMerge:merge file="xdoclet/modules/hibernate/resources/hibernate-properties.xdt"> </XDtMerge:merge> </XDtMethod:forAllMethods> + <XDtMerge:merge file="hibernate-properties-{0}.xml"> + <!-- + To add non XDoclet property mappings, create a file named + hibernate-properties-<XDtClass:className />.xml + containing the additional properties and place it in your merge dir. + --> + </XDtMerge:merge> </XDtClass:pushClass> </XDtHibernate:setColumnPrefix> </component> </XDtMethod:ifHasMethodTag> So you can use abstract components with many concrete impls and different mapping properties, example: public class MyHibernateClass { ... /** * @hibernate.component */ public MyConcreteComponent getMyConcreteComponent() { return myConcreteComponent; } /** * @hibernate.component */ public MyConcreteComponent2 getMyConcreteComponent2() { return myConcreteComponent2; } } public abstract class MyAbstractComponent { public String getSomeCommonProperty() { return someCommonProperty; } } public class MyConcreteComponent extends MyAbstractComponent { } public class MyConcreteComponent2 extends MyAbstractComponent { } hibernate-properties-MyConcreteComponent.xml <property name="someCommonProperty" type="java.lang.String" column="COLUMN_1" /> hibernate-properties-MyConcreteComponent2.xml <property name="someCommonProperty" type="java.lang.String" column="OTHER_COLUMN" /> ---------------------------------------------------------------------- --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/xdoclet/secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira ------------------------------------------------------- This SF.net email is sponsored by Microsoft Mobile & Embedded DevCon 2005 Attend MEDC 2005 May 9-12 in Vegas. Learn more about the latest Windows Embedded(r) & Windows Mobile(tm) platforms, applications & content. Register by 3/29 & save $300 http://ads.osdn.com/?ad_id=6883&alloc_id=15149&op=click _______________________________________________ xdoclet-devel mailing list xdoclet-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xdoclet-devel