2010-11-17 74 views
0

当我使用hibernate eclipse插件从我的表中生成Java类时,私有字段名称与我的表名称相同。有没有一种方法可以使我的列名改为相同?hibernate使用字段名称=数据库列名称生成POJO类

例如:

table: User 
column : name (string) 
column : homeAddressId (fk to addressTable) 

生成的类现在的问题是:

User{ 
private String name; 
private Address address; 
} 

我希望它是:

User{ 
private String name; 
private Address homeAddress; 
} 

有没有设置来做到这一点?

非常感谢您的帮助。

回答

0

在你和hibernate之间的理解中可能存在问题。其实,我看到的是,有一个外键与其他表是Address,而不是homeAddress

你还可以发布其他表(地址)结构。

好像其他表名是Address那么hibernate插件是绑定创建名称为address的属性,因为我觉得插件没有它自己的智能。

+0

该插件已经知道我的表列nam。为什么它不能使用该列名称在我的课程中生成私有字段? – 2010-11-17 15:19:57

+0

@ Sean:你的列名是homeAddressId,但它是一个具有一对多关联的外键,所以它会考虑关联表而不是列名,而你可以看到正在生成的hbm文件,你会发现在那里的关键参考。 – 2010-11-18 04:16:06

0

在此之前,你的域名应该是你想要的。如果您需要对映射(ORM)进行更多更改,则可能需要在hibernate-conf.xml中执行此操作。生成的类和当前类是相同的。例如,user.xml将是这样的:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="User" table="ADMIN_USER_TBL"> 
<id name="id" type="string" column="ADMIN_USER_ID"> 
     <generator class="assigned" /> 
</id> 
<property name="name" column="FIRST_NAME" /> 
... 
</class> 
</hibernate-mapping> 

然后,有地址的映射:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="Address" table="ADDRESS_TBL"> 
<id name="id" type="string" column="ADMIN_USER_ID"> 
     <generator class="assigned" /> 
</id> 
<property name="address" column="ADDRESS1" /> 
<property name="address2" column="ADDRESS2" /> 
<property name="city" column="ADDRESS_CITY" /> 
<property name="state" column="ADDRESS_STATE" /> 
<property name="zip" column="ADDRESS_ZIP" /> 
... 
</class> 
</hibernate-mapping> 

让我知道这是否有助于! ;)

+0

我正在寻找一种方法让hibernate生成的类生成专用字段与db列名称相同。我不想修改生成的类或映射文件。感谢您的回复,但这不是我正在寻找的。我错过了什么吗? – 2010-11-17 03:01:34