我必须使用一些元数据修改(更好地说增强)已经存在的实体类。 calss的元数据是通过注释定义的。但是现在我想在实体类中添加一些UserType定义(特定于hibernate)。如果我通过我的hibernate-mapping-file中的注释重复所有元数据集,但是有没有办法只添加我的特定方面而不覆盖基于注释的东西?提前谢谢。
答案 0 :(得分:1)
哦,抱歉。我当然可以:
@Entity
public class Thing implements Serializable {
@Id
private ContractNumber contractNumber;
@Column
private String columnViaAnnotation;
public ContractNumber getContractNumber() {
return contractNumber;
}
public void setContractNumber(ContractNumber contractNumber) {
this.contractNumber = contractNumber;
}
public String getColumnViaAnnotation() {
return columnViaAnnotation;
}
public void setColumnViaAnnotation(String columnViaAnnotation) {
this.columnViaAnnotation = columnViaAnnotation;
}
}
我的映射:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-mapping>
<class name="com.mypackage.Thing">
<id name="contractNumber" type="myType" column="contractNumber" />
</class>
<typedef class="com.mypackage.HibernateContractNumberConverter" name="myType" />
</hibernate-mapping>
自定义类型效果非常好。数据类型ContractNumber将转换为int,反之亦然。但不幸的是,专栏列#ViaAnnotation&#39;因为我的映射文件中没有提到它而消失了。我希望Hibernate足够聪明,可以合并两种配置(基于xml和注释)。有没有机会这样做?