浏览 19244 次
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-12
读本文之前,假设你对eclipse和ant有了一定的了解。 1.开发环境 jsdk1.4.2 eclipse2.1.2 hibernate2.1.1 xdoclet1.2 eclipse2.1.2->ant1.5.3 2.eclipse中ant的问题解决:在eclipse>Window>Preferences>Ant>Runtime>Classpath中加上jsdk的tools.jar。 问题在: 运行ant提示需要JAVA_HOME,在eclipse中如何设置。 3.构建build.xml文件片断: 这是xdoclet的使用规范,其中name="hibernatedoclet",要跟下面定义的标签一样。 <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask" classpathref="xdoclet.class.path" /> <target name="xdoclet.hibernate.mapping" depends="compile"> <echo>+---------------------------------------------------+</echo> <echo>| |</echo> <echo>| R U N N I N G H I B E R N A T E D O C L E T |</echo> <echo>| |</echo> <echo>+---------------------------------------------------+</echo> <!-- 这里要和taskdef->name中定义的值一样。同是:hibernatedoclet --> <hibernatedoclet destdir="${build.classes}" verbose="true"> <fileset dir="${src.dir}"> <include name="**/*.java" /> </fileset> <!-- 默认为1.1,我们使用的2.X以上版本,用2.0这个版本 --> <hibernate version="2.0"/> </hibernatedoclet> </target> 其余有什么不懂得地方请参考资料说的内容。 4.我只那一个例子说明一下:package com.javamodel.hibernate; import java.util.HashSet; import java.util.Set; /** * @hibernate.class * table="author" * dynamic-update="true" * dynamic-insert="true" * 这个类对应的表是author */ public class Author{ private String id ; private String alias = null; private Person person = null; private Set publications = new HashSet();; private Set works = new HashSet();; /** * @hibernate.id * unsaved-value="null" generator-class="foreign" * 定义外键 * @hibernate.generator-param * name="property" value="person" * 对应的Author对应的属性 */ public String getId(); { return id; } public void setId(String i); { id = i; } /** * @hibernate.property * length="20" * 声明表中对应的字段 */ public String getAlias(); { return alias; } public void setAlias(String string); { alias = string; } /** * @hibernate.one-to-one * cascade="all" constrained="true" * 在Author与Person之间,声明one-to-one的关联关系 */ public Person getPerson(); { return person; } public void setPerson(Person person); { this.person = person; } /** * @hibernate.set * lazy="true" inverse="true" cascade="all" * 定义Hibernate <set> collection * @hibernate.collection-key * column="authorid" * 对应表中的字段 * @hibernate.collection-one-to-many * class="com.javamodel.hibernate.Publication" * 在Author与Publication之间,声明one-to-many的关联关系 */ public Set getPublications(); { return publications; } public void setPublications(Set set); { publications = set; } /** * @hibernate.set * lazy="true" * table="author_work" * @hibernate.collection-key * column="author_id" * @hibernate.collection-many-to-many * column="work_id" * class="com.javamodel.hibernate.Work" */ public Set getWorks(); { return works; } public void setWorks(Set set); { works = set; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-02-16
http://forum.iteye.com/viewtopic.php?t=3029
通用英文没有翻译,不懂的没有翻译,翻译了的还可能不对:-( |
|
返回顶楼 | |
发表时间:2004-02-21
有个问题,一直不知道怎样处理
xdoclet的标记不能够重复用在一个方法前面吗???? hibernate.many-to-one 只被识别第一个 import java.util.Collection; /** * @author Administrator * @hibernate.class table="BugLevel" * To change the template for this generated type comment go to * Window&Preferences&Java&Code Generation&Code and Comments */ public class BugLevel extends SprFunc{ private Collection roleModules; /** * @hibernate.set name="roleModules" table="role_module" cascade="all" inverse="true" lazy="true" * @hibernate.collection-key column="bugLevelId" * @hibernate.collection-composite-element class="net.gemfree.tmanager.persistent.RoleModule" * @hibernate.many-to-one name="bugPreference" column="bugPreferenceId" class="net.gemfree.tmanager.persistent.BugPreference" * @hibernate.many-to-one name="bugStatus" column="bugStatusId" class="net.gemfree.tmanager.persistent.BugStatus" * @hibernate.many-to-one name="module" column="modId" class="net.gemfree.tmanager.persistent.Module" * @hibernate.many-to-one name="role" column="roleId" class="net.gemfree.tmanager.persistent.Role" * * @return Collection */ public Collection getRoleModules(); { return roleModules; } public void setRoleModules(Collection roleModules); { this.roleModules = roleModules; } } <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="net.gemfree.tmanager.persistent.BugLevel" table="BugLevel" dynamic-update="false" dynamic-insert="false" > <id name="id" column="id" type="string" length="32" > <generator class="uuid.hex"> </generator> </id> <set name="roleModules" table="role_module" lazy="true" inverse="true" cascade="all" sort="unsorted" > <key column="bugLevelId" /> <composite-element class="net.gemfree.tmanager.persistent.RoleModule" > <many-to-one name="bugPreference" class="net.gemfree.tmanager.persistent.BugPreference" cascade="none" outer-join="auto" update="true" insert="true" /> </composite-element> </set> <set name="sprs" lazy="true" inverse="true" cascade="save-update" sort="unsorted" > <key column="id" /> <one-to-many class="net.gemfree.tmanager.persistent.Spr" /> </set> <property name="name" type="java.lang.String" update="true" insert="true" > <column name="name" length="50" not-null="false" unique="false" /> </property> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-BugLevel.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping> |
|
返回顶楼 | |
发表时间:2004-02-21
已搞定
|
|
返回顶楼 | |
发表时间:2004-03-25
请问是怎么解决的,我也碰到类似的问题
|
|
返回顶楼 | |
发表时间:2004-04-28
太棒了,总算学会用edoclet了,太方便了,感谢楼主
|
|
返回顶楼 | |
发表时间:2004-04-29
请问楼主,如何在Maven中使用xdoclet?xdocelt的文档中只有一个ejbdoclet的指南,修改为hibernatedocelt、安装maven plugin之后,总是报错,部分pojo能够正确生成,部分不行,而使用ant是没有问题的。
|
|
返回顶楼 | |
发表时间:2004-04-29
maven 我没用过。不知为何物。
|
|
返回顶楼 | |