有如下两个类,PersistInfo.java & PersistObject.java,代码如下:
public class PersistInfo {
    private long id;
    private Timestamp createTimestamp;
    private Timestamp updateTimestamp;
}public class PersistObject {
    private PersistInfo persistInfo;
}默认的构造函数以及get & set方法就不贴上去了,认为PersistInfo是PersistObject的一个组间,故打算把他们放在一张数据库表中保存,但是要求PersistInfo.id是这个表的主键。请问这种形式的组合关系需要如何写映射XML啊,或者用注解的形式也行。初学Hibernate,望大家多多帮忙。另外不知道大家有否听说过一种不存在外键关联的数据库设计?就是所有的关联查询均在程序里面实现,对象之间的关联不再数据表中体现,希望有了解的大侠指点一二。

解决方案 »

  1.   


    只給表一個主鍵,其他的全在hibernate的配置文件中配置,查詢用QBC可以實現!!!!
      

  2.   

    试试这样行不行……
    @Embeddable
    public class PersistInfo {
      private long id;
      private Timestamp createTimestamp;
      private Timestamp updateTimestamp;
      
      @Id
      private long getId() {
       return id;
      }
    }@Entity
    public class PersistObject {
      @Embedded
      private PersistInfo persistInfo;
    }
      

  3.   

    使用的javax.persistence的注解么?我尝试一下,谢谢楼上。
      

  4.   

    不行啊,IDE提示PersistObject没有被定义任何ID,我用的IDE是NetBeans 6.8
      

  5.   

    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="events.Person" table="PERSON">
            <id name="id" column="PERSON_ID">//这个是主键
                <generator class="native"/>//定义类型为自增长
            </id>
            <set name="emailAddresses" table="PERSON_EMAIL_ADDR">
        <key column="PERSON_ID"/>
        <element type="string" column="EMAIL_ADDR"/>
    </set>
            <property name="age"/>
            <property name="firstname"/>
            <property name="lastname"/>
            <set name="events" table="PERSON_EVENT">
            <key column="PERSON_ID"/>
            <many-to-many column="EVENT_ID" class="events.Event"/>
        </set>
            
        </class></hibernate-mapping>
            虽然猜楼主应该会这个,但你的题目让写hibernate的映射文件,我就发了这个,希望对你有帮助