【问题标题】:Common Properties for all Hibernate hbm files?所有 Hibernate hbm 文件的通用属性?
【发布时间】:2018-11-07 20:38:02
【问题描述】:

我使用的是 Hibernate 4.02。 我想要做的是我想在我的所有 hbm 文件中包含一些常见的 Hbm 映射。 例如帐户、联系人 hbm.xml 文件有自己的文件 ID、名称等。 我想要做的是向所有这些 hbm 文件添加一些常见的属性,如 ModifiedBy 和 CreatedBy。

【问题讨论】:

  • 如果您可以使用注释,@MappedSuperclass 用于此目的,不确定在使用hbm.xml 文件时是否支持。
  • No 不能与注释一起使用。
  • hbm有什么办法
  • 如果您在某种抽象类中有modifiedBy 和createdBy 等字段,那么您可能希望在hbm 文件中使用继承。 Hibernate 提供了 3 种类型的继承。对你来说最好的是“每个具体班级的表格”。

标签: java hibernate


【解决方案1】:

您可以为您的 xml 文件定义外部实体。这不是休眠特定功能,而是 xml 功能。 Check this.

您可以使用通用属性指定一个通用 .hbm 文件,然后将其导入所有其他 hbm 文件中。

例如,您可以在类路径中创建一个名为commonProperties.hbm 的文件,其内容如下

<property name="created" type="timestamp" not-null="true" />
<property name="lastUpdated" type="timestamp" not-null="true"/>

然后在你的另一个hbm文件中,例如Person.hbm.xml你可以导入上面的hbm文件,如下所示

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"
  [<!ENTITY commonProperties SYSTEM "classpath://path/to/commonProperties.hbm">]
  >

<hibernate-mapping>
<class name="com.example.Person" table="person">
....
<id name="id" column="personid">
  <generator class="native" />
</id>

&commonProperties;

<property name="name" column="name" not-null="true" unique="true" length="230" />
....
....
....

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2017-01-09
    • 2011-12-27
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多