posts - 55,comments - 89,trackbacks - 0
          摘自:http://www.javaeye.com/topic/95822

          school和userMember是一對多關系:

          SchoolInfo.java

           1import javax.persistence.CascadeType;   
           2import javax.persistence.Column;   
           3import javax.persistence.Entity;   
           4import javax.persistence.FetchType;   
           5import javax.persistence.GeneratedValue;   
           6import javax.persistence.Id;   
           7import javax.persistence.OneToMany;   
           8import javax.persistence.Table;   
           9import javax.persistence.Temporal;   
          10import javax.persistence.TemporalType;   
          11   
          12import org.hibernate.annotations.Formula;   
          13import org.hibernate.annotations.GenericGenerator;   
          14   
          15@Entity   
          16@Table(name = "school_info")   
          17public class SchoolInfo implements java.io.Serializable {   
          18   
          19    @Id   
          20    @GeneratedValue(generator = "system-uuid")   
          21    @GenericGenerator(name = "system-uuid", strategy = "uuid")   
          22    private String id;//hibernate的uuid機制,生成32為字符串   
          23   
          24    @Column(name = "actcodeId", updatable = false, nullable = true, length = 36)   
          25    private String actcodeId;   
          26   
          27    @Formula("select COUNT(*) from school_info")   
          28    private int count;   
          29   
          30    @Temporal(TemporalType.TIMESTAMP)//不用set,hibernate會自動把當前時間寫入   
          31    @Column(updatable = false, length = 20)   
          32    private Date createTime;   
          33   
          34    @Temporal(TemporalType.TIMESTAMP)   
          35    private Date updateTime;// 剛開始我默認insertable=false,但會讀取出錯提示如下:   
          36    // Value '0000-00-00' can not be represented as java.sql.Timestamp   
          37   
          38    // mappedBy="school"就相當于inverse=true,(mappedBy指定的是不需要維護關系的一端)   
          39    // 應該注意的是mappedBy值對應@ManyToOne標注的屬性,我剛開始寫成"schoolId",讓我郁悶了好一會 
          40    @OneToMany(mappedBy = "school", cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = UserMember.class)   
          41    // 用范性的話,就不用targetEntity了   
          42    private List<usermember> users = </usermember>new ArrayList<usermember>();  </usermember> 
          43       
          44}
             
          45

          @GeneratedValue(strategy=GenerationType.AUTO)我們常用的自增長機制,我這里采用的是hibernate的uuid生成機制.
          需要注意的是import javax.xx.Entity ,而不是org.hibernate.xx.Entity。

          郁悶的是我上面用到@Formula,生成的sql竟然是'select COUNT(*) from school_info as formula0_ from school_info schoolinfo0_,當然不能執行了,尋求正解中~!!!!!!!!!

          UserMember.java(前面引入的包已經貼過了,下面就不貼了)
           1 @Entity   
           2 @Table(name = "teacher_info")//實體類和數據庫表名不一致時,才用這個   
           3 public class UserMember implements java.io.Serializable {   
           4    
           5     @Id   
           6     @GeneratedValue(generator = "system-uuid")   
           7     @GenericGenerator(name = "system-uuid", strategy = "uuid")   
           8     private String id;   
           9    
          10     @Column(updatable = false, nullable = false, length = 20)   
          11     private String logonName;   
          12        
          13     @Temporal(TemporalType.TIMESTAMP)   
          14     @Column(updatable = false, length = 20)   
          15     private Date createTime;   
          16    
          17     @Temporal(TemporalType.TIMESTAMP)   
          18     private Date updateTime;   
          19    
          20     @ManyToOne(cascade = { CascadeType.MERGE })   
          21     @JoinColumn(name = "schoolId")   
          22     private SchoolInfo school;   
          23     //注意該類就不用聲明schoolId屬性了,如果不用@JoinColumn指明關聯的字段,hibernate默認會是school_id.   
          24    
          25 }   

          posted on 2009-07-26 13:40 jiafang83 閱讀(3188) 評論(1)  編輯  收藏

          FeedBack:
          # re: Hibernate一對多雙向annotation配置
          2010-09-05 20:48 | zjava個人博客
          拜托了,不錯!希望能多多交流
          zjava個人博客 http://www.zjava.org.ru  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 宿松县| 抚顺县| 宁德市| 左云县| 明光市| 沙洋县| 庄浪县| 合水县| 基隆市| 贵州省| 易门县| 新邵县| 泰和县| 屏边| 潜江市| 诸暨市| 拉孜县| 崇义县| 正宁县| 鄂州市| 托里县| 马山县| 乌恰县| 大田县| 昭通市| 荃湾区| 金溪县| 巴中市| 弥渡县| 平山县| 丰台区| 广平县| 怀来县| 松桃| 和田市| 灵川县| 华安县| 呼伦贝尔市| 长垣县| 嘉兴市| 博乐市|