【问题标题】:Hibernate Tools : how to generate base classes?Hibernate 工具:如何生成基类?
【发布时间】:2010-12-01 09:26:10
【问题描述】:
我最近安装了 Eclipse Helios 和 Hibernate Tools 3.4.0.Beta1。
我一直在尝试从映射文件生成“基类”,但不知道该怎么做。
假设我有一个名为 Individual.hbm.xml 的映射文件。
我希望 Hibernate Tools 生成 2 个 POJO:
- 包含构造函数和 getter/setter 的 BaseIndividual.java
- 一个 Individual.java,我可以在其中添加在我重新生成 POJO 时不会被删除的“自定义”代码
我花了很多时间寻找信息,但从未找到切实可行的答案。
如果有人可以提供帮助...在此先感谢
【问题讨论】:
标签:
hibernate
hibernate-mapping
hibernate-tools
【解决方案1】:
我在自己尝试做同样的事情时遇到了你的问题(我想)。
我所做的是在我的 hbm.xml 配置文件中设置以下内容:
<class
name="User"
table="USERS">
<meta attribute="generated-class">ocs.authentication.UserBase</meta>
<id
name="user_id"
column="USER_ID"
type="integer">
<generator class="increment"/>
</id>
<property
name="username"
column="USERNAME"
type="string" />
</class>
注意<meta attribute="generated-class"> 部分。这将导致生成的类被称为 UserBase(在这种情况下)。
然后,您可以创建另一个将扩展此基类的类(例如称为 User):
public class User extends UserBase {
public User() {
}
public void SomeFunction() {
...
}
}
这似乎对我有用。
我希望这对您或其他想要做类似事情的人有用。
【解决方案2】:
我也在寻找一种方法来做到这一点。
我现在正在做的是:
- 将我的自定义类“Individual.java”保存到另一个包而不更新引用。
- 生成我所有的pojo(带有表名,即个人)
- 重命名它们为tablename+“Base”(即IndividualBase)而不更新引用)
- 然后移动我的自定义类(个人),它从另一个包中扩展了 pojo。
您是否找到了一种自动的方法,例如:
- 使用自定义模板
- 编写您自己的 ant 任务
- 配置hibernate.reveng.xml
我同意 Hibernate Synchronizer 做得很好!