<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 55  文章 - 187  trackbacks - 0
    <2009年2月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    1234567

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    groovy

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    在設(shè)計(jì)數(shù)據(jù)庫(kù)表的時(shí)候,往往會(huì)設(shè)計(jì)出帶有復(fù)合主鍵的表,即表的記錄由多個(gè)字段聯(lián)合標(biāo)識(shí),如:


    CREATE TABLE TB_HOUR_DATA
    (
      STAT_DATE  DATE                   NOT NULL,
      PATH_ID    NUMBER(
    20)             NOT NULL,
      VALUE      VARCHAR2(
    512 BYTE),
      TYPE       NUMBER(
    1)              NOT NULL
    )
    其中,復(fù)合主鍵為(STAT_DATE,PATH_ID,TYPE)

    針對(duì)這種情況,hibernate(jpa) 的 annotation 映射聲明如下:
    1、復(fù)合主鍵類HourDataPK
    package net.kong.wolf.stat.db.entity;

    import java.io.Serializable;
    import java.util.Date;

    import javax.persistence.Column;
    import javax.persistence.Embeddable;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;

    @Embeddable
    public class HourDataPK implements Serializable {

        
    /**
         * 
         
    */

        
    private static final long serialVersionUID = 1L;

        @ManyToOne
        @JoinColumn(name 
    = "path_id", nullable = false)
        
    private Path path;

        @Column(name 
    = "stat_date")
        @Temporal(TemporalType.DATE)
        
    private Date statDate;

        
    private int type;

        
    public Path getPath() {
            
    return path;
        }


        
    public void setPath(Path path) {
            
    this.path = path;
        }


        
    public Date getStatDate() {
            
    return statDate;
        }


        
    public void setStatDate(Date statDate) {
            
    this.statDate = statDate;
        }


        
    public int getType() {
            
    return type;
        }


        
    public void setType(int type) {
            
    this.type = type;
        }

    }


    2、實(shí)體類HourData:
    package net.kong.wolf.stat.db.entity;

    import java.io.Serializable;

    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;
    import javax.persistence.Table;

    import net.kong.wolf.stat.core.Text;

    @Entity
    @Table(name 
    = "TB_HOUR_DATA")
    public class HourData implements Serializable {

        
    /**
         * 
         
    */

        
    private static final long serialVersionUID = 1L;

        @EmbeddedId
        
    private HourDataPK pk;

        
    private String value;

        
    public String getValue() {
            
    return value;
        }


        
    public void setValue(String value) {
            
    this.value = value;
        }


        
    public int[] getHours() {
            
    return parseValue(value);
        }


        
    private int[] parseValue(String value) {
            
    int[] result = new int[24];
            
    for (int i = 0; i < 24; i++{
                result[i] 
    = -1;
            }

            
    if (value == null{
                
    return result;
            }

            String[] hs 
    = Text.splitCSV(value);
            
    int len = Math.min(24, hs.length);
            
    for (int i = 0; i < len; i++{
                result[i] 
    = Text.parseInt(hs[i], -1);
            }

            
    return result;
        }


        
    public void setHours(int[] hours) {
            
    int[] tHours = parseValue(value);
            StringBuilder sb 
    = new StringBuilder();
            
    int len = Math.min(24, hours.length);
            
    for (int i = 0; i < len; i++{
                sb.append(hours[i] 
    < 0 ? tHours[i] : hours[i]).append(',');
            }

            sb.deleteCharAt(sb.length() 
    - 1);
            
    this.value = sb.toString();
        }


        
    public HourDataPK getPk() {
            
    return pk;
        }


        
    public void setPk(HourDataPK pk) {
            
    this.pk = pk;
        }

    }

    posted on 2009-02-25 14:10 大衛(wèi) 閱讀(3007) 評(píng)論(2)  編輯  收藏 所屬分類: Java

    FeedBack:
    # re: hibernate(jpa)復(fù)合主鍵annotation聲明方法 2009-02-26 10:07 Mr.wang
    學(xué)習(xí)  回復(fù)  更多評(píng)論
      
    # re: hibernate(jpa)復(fù)合主鍵annotation聲明方法 2009-03-03 13:19 相似
    有夠爛  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲av高清在线观看一区二区| 西西人体免费视频| 亚洲免费综合色在线视频| 亚洲美女中文字幕| 久久精品国产亚洲av麻豆小说| 亚洲国语精品自产拍在线观看| 亚洲AV无码乱码在线观看裸奔 | 一级特黄a免费大片| 午夜亚洲乱码伦小说区69堂| 豆国产96在线|亚洲| 无码毛片一区二区三区视频免费播放 | 亚洲欧洲无码AV电影在线观看| 久久亚洲av无码精品浪潮| 国产亚洲精品成人a v小说| 一本久久a久久精品亚洲| 国产亚洲无线码一区二区| 久久精品国产亚洲| 亚洲色欲或者高潮影院| 中文无码亚洲精品字幕| 国产偷国产偷亚洲高清在线| 一级女性全黄生活片免费看| 在线人成免费视频69国产| 91精品全国免费观看含羞草| 野花高清在线观看免费完整版中文| 最近免费中文字幕大全视频| 国产国产成年年人免费看片| 国产成人综合亚洲AV第一页| 无码欧精品亚洲日韩一区| 亚洲乱码一二三四区国产| 亚洲av无码成人精品区一本二本| 免费观看又污又黄在线观看| 久草免费福利视频| 免费下载成人电影| 亚洲国产成人久久综合一区77 | 午夜神器成在线人成在线人免费 | 无码国产精品久久一区免费| 亚洲成片观看四虎永久| 亚洲av无码乱码国产精品fc2 | 亚洲精品无码MV在线观看| 亚洲精品中文字幕麻豆| 亚洲AV成人无码网站|