`
yxl276
  • 浏览: 9995 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

hibernate复合(联合)主键的做关联类的例子

阅读更多
  1. public class Station implements java.io.Serializable {
  2. // Fields
  3. private Integer stationId;
    private String stationName;
    private Set stationRecords = new HashSet();
  4. // Constructors
  5. public Set getStationRecords() {
       return stationRecords;
    }
  6. public void setStationRecords(Set stationRecords) {
       this.stationRecords = stationRecords;
    }
  7. /** default constructor */
    public Station() {
    }
  8. /** full constructor */
    public Station(String stationName) {
       this.stationName = stationName;
    }
  9. // Property accessors
  10. public Integer getStationId() {
       return this.stationId;
    }
  11. public void setStationId(Integer stationId) {
       this.stationId = stationId;
    }
  12. public String getStationName() {
       return this.stationName;
    }
  13. public void setStationName(String stationName) {
       this.stationName = stationName;
    }
  14. public void stationDev(Dev dev) {
       RecordId id = new RecordId();
       id.setStation(this);
       id.setDev(dev);
       Record record = new Record();
       record.setId(id);
       record.setRecordTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
         .format(new Date()));
       stationRecords.add(record);
    }
  15. public void removeRecord(Record record) {
       stationRecords.remove(record);
    }
  16. }
  17. public class Dev implements java.io.Serializable {
  18. // Fields
  19. private Integer devId;
    private String devName;
    private Set devRecords = new HashSet();
  20. // Constructors
  21. /** default constructor */
    public Dev() {
    }
  22. /** full constructor */
    public Dev(String devName) {
       this.devName = devName;
    }
  23. // Property accessors
  24. public Integer getDevId() {
       return this.devId;
    }
  25. public void setDevId(Integer devId) {
       this.devId = devId;
    }
  26. public String getDevName() {
       return this.devName;
    }
  27. public void setDevName(String devName) {
       this.devName = devName;
    }
  28. public Set getDevRecords() {
       return devRecords;
    }
  29. public void setDevRecords(Set devRecords) {
       this.devRecords = devRecords;
    }
  30. }
  31. public class RecordId implements java.io.Serializable {
  32. // Fields
  33. private Station station;
  34. private Dev dev;
  35. // Constructors
  36. /** default constructor */
    public RecordId() {
    }
  37. // Property accessors
  38. public Station getStation() {
       return station;
    }
  39. public void setStation(Station station) {
       this.station = station;
    }
  40. public Dev getDev() {
       return dev;
    }
  41. public void setDev(Dev dev) {
       this.dev = dev;
    }
  42. public boolean equals(Object obj) {
       return (obj instanceof RecordId)
         && (this.getStation().equals(((RecordId) obj).getStation()))
         && (this.getDev().equals(((RecordId) obj).getDev()));
    }
  43. public int hashCode() {
       return this.getStation().hashCode() ^ this.getDev().hashCode();
    }
  44. }
  45. public class Record implements java.io.Serializable {
  46. // Fields
  47. private RecordId id;
    private String recordTime;
  48. // Constructors
  49. /** default constructor */
    public Record() {
    }
  50. /** full constructor */
    public Record(RecordId id, String recordTime) {
       this.id = id;
       this.recordTime = recordTime;
    }
  51. // Property accessors
  52. public RecordId getId() {
       return this.id;
    }
  53. public void setId(RecordId id) {
       this.id = id;
    }
  54. public String getRecordTime() {
       return this.recordTime;
    }
  55. public void setRecordTime(String recordTime) {
       this.recordTime = recordTime;
    }
  56. }
  57. Station.hbm.xml
  58. <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com..bean.Station" table="Station" schema="dbo" catalog="test">
            <id name="stationId" type="java.lang.Integer">
                <column name="StationId" />
                <generator class="native" />
            </id>
            <property name="stationName" type="java.lang.String">
                <column name="StationName" length="50" not-null="true" />
            </property>
            <set name="stationRecords" inverse="true" lazy="true" cascade="all-delete-orphan">
        <key column="stationId" />
        <one-to-many class="com.dpc.bean.Record"/>
       </set>
           
        </class>
    </hibernate-mapping>
  59. Dev.hbm.xml
  60. <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.bean.Dev" table="Dev" schema="dbo" catalog="test">
            <id name="devId" type="java.lang.Integer">
                <column name="DevId" />
                <generator class="native" />
            </id>
            <property name="devName" type="java.lang.String">
                <column name="DevName" length="50" not-null="true" />
            </property>
            <set name="devRecords" inverse="false" lazy="true" cascade="all-delete-orphan">
        <key column="DevId" />
        <one-to-many class="com.dpc.bean.Record"/>
       </set>
        </class>
    </hibernate-mapping>
  61. Record.hbm.xml
  62. <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
    Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
    <class name="com.bean.Record" table="Record" schema="dbo"
       catalog="test">
       <composite-id name="id" class="com.dpc.bean.RecordId"
        unsaved-value="any">
        <key-many-to-one name="station" column="StationId"
         class="com.dpc.bean.Station" />
        <key-many-to-one name="dev" column="DevId"
         class="com.dpc.bean.Dev" />
       </composite-id>
       <property name="recordTime" type="java.lang.String">
        <column name="RecordTime" not-null="true" />
       </property>
    </class>
    </hibernate-mapping>
0
0
分享到:
评论

相关推荐

    Hibernate复合主键

    在本例中,我们将通过一个简单的复合主键的做关联类的例子来说明 Hibernate 复合主键的使用。 复合主键的定义 在 Java 中,复合主键类需要实现 equals 方法和 Serializable 接口。例如,RecordId 类就是一个复合...

    hibernate复合主键映射

    这里,`@Embeddable`注解告诉Hibernate这是一个可以嵌入到其他实体中的类,它将作为复合主键的一部分。 然后,在包含复合主键的实体类中,我们需要使用`@EmbeddedId`注解: ```java import javax.persistence....

    hibernate 无主键表映射

    这里,`Order`实体类通过`@EmbeddedId`注解关联了`OrderKey`复合主键类。 3. **映射到数据库的SQL语句** 在无主键表映射的情况下,数据库中的表应该没有明确的`PRIMARY KEY`约束,而是依赖于复合主键字段的唯一性。...

    hibernate3 注释生成复合主键或者嵌入式主键的方法及实例.doc

    在示例中,我们有一个`UserRolePK`类,用于表示用户角色关联的复合主键。这个类需要实现`Serializable`接口,因为所有主键都必须是可序列化的,以便于JPA处理。此外,为了确保两个`UserRolePK`对象是否相等,我们...

    Hibernate关联映射

    然后,我们看到一个基于主键类的复合主键持久化类`User2`。在这个例子中,`User2`类包含了一个`UserPk`类型的属性`userpk`,表示主键对象。这样做的好处是,可以将主键作为一个独立的对象来处理,增强了代码的可读性...

    hibernate之一对一关联映射

    在某些情况下,两个实体可能共享一个主键,这被称为复合主键。在Hibernate中,可以使用`@PrimaryKeyJoinColumn`注解来配置这种关联。 总结,Hibernate的一对一关联映射为我们提供了灵活的方式来处理数据库中的一对...

    hibernate一对一的例子

    - 一对一关系通常要求一方为主键,另一方为外键,但也可以设计成两者都是主键,这被称为复合主键。 - 需要确保数据库表结构与实体类的映射一致,包括外键约束等。 通过以上步骤,我们可以成功地在Hibernate中建立...

    hibernate

    ### Hibernate复合组件 复合组件(Composite Element)是指一个实体类中包含其他实体类的复杂结构。在数据库中,这可能表现为一个表中的某些列实际上是由另一个表的数据组成。在Hibernate中,可以使用`@Embeddable`...

    hibernate 最常见的主建配置

    - `&lt;composite-id&gt;` 标签用于定义复合主键,其中包含两个 `&lt;key-property&gt;` 标签,每个 `&lt;key-property&gt;` 定义了一个主键字段。 #### 四、双主键、有外键的Hibernate配置实例 复合主键同时包含外键的情况也是比较...

    Java Persistence with Hibernate, 2nd Edition

    8. **高级特性**:书中还涵盖了如继承映射、多态性、集合映射、联合主键、复合主键等复杂场景的处理方法,以及如何使用Hibernate的事件监听器和拦截器。 9. **最佳实践**:书中包含了许多最佳实践,帮助开发者避免...

    hibernate_reference中文文档.pdf

    - **8.4 组件作为联合标识符 (Components as composite identifiers)**:说明如何将组件用作复合主键的一部分。 - **8.5 动态组件 (Dynamic components)**:介绍动态组件映射的实现方式。 #### 9. 继承映射 ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate的配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系映射文件 52 3.4.1 映射文件的...

    Hibernate开发指南.pdf

    12. **高级特性**:涵盖集合映射、复合主键、双向关联、自动生成SQL、查询结果转换为自定义类型等高级主题。 13. **案例分析**:通过实际项目中的例子,演示如何运用Hibernate解决具体问题,分享作者在咨询项目中的...

    Hibernate 参考文档

    - **composite-id联合ID**:当实体类具有多个主键字段时的映射方法。 - **识别器(discriminator)**:用于区分继承体系中的不同子类。 - **版本(version)**:乐观锁实现策略之一。 - **时间戳(timestamp)**...

Global site tag (gtag.js) - Google Analytics