JPA中常見類型的映射問題

1)int和String類型,是最簡單的。

@Column(name = "sign_group_name")

    public String getName() {

       return name;

    }

2)enum類型,

private BossType type;

@Column(name="type")

    @Enumerated(EnumType.ORDINAL)

    public BossType getType() {

       return type;

    }

其中BossType為:

public enum BossType {

    /**

     * 直接主管.

     */

    DIRECT(1),

    /**

     * 辅导员.

     */

    COUNSELOR(4);

   

    private int value;

    private BossType(int value){

       this.setValue(value);

    }

    public int getValue() {

       return value;

    }

    public void setValue(int value) {

       this.value = value;

    }

}

3)Date類型,其中TemporalType的取值有DATE,表示日期,TIME表示時間,TIMESTAMP表示日期和時間。

private Date enterDate;

@Column(name="enter_date")

    @Temporal(TemporalType.DATE)

    public Date getEnterDate() {

       return enterDate;

    }

4)自定義類類型,如Employee,還有根據實際情況是一對一還是多對一,還有其屬性的值也要依據實際情況來設置。在不影響性能情況下,其fetch一般可設置為FetchType.EAGER,表示在get數據時沒有延遲。

private Employee assistant;

@ManyToOne(fetch = FetchType.EAGER)

    @JoinColumn(name="assistant_id")

    public Employee getAssistant() {

       return assistant;

    }

5)List或Set

private List<RoleMember> members;

@OneToMany(mappedBy = "role", cascade = CascadeType.ALL, fetch = FetchType.LAZY)

    public List<RoleMember> getMembers() {

       return members;

    }

其mappedBy的值是對應Role類中是role成員變量,cascade是設置在做CUD(create、update、delete)操作時是否級聯,fetch是設置在做R(read或get、load)操作時是否延遲。

6)boolean類型,有兩種解決方案,第一種方案依賴了Hibernate,

所有在此只介紹第二種。

/**

     * 是否离职.

     */

    private int leftFlag;

     @Column(name="left_flag")

    protected int getLeftFlag() {

       return leftFlag;

    }

    protected void setLeftFlag(int leftFlag) {

       this.leftFlag = leftFlag;

    }

@Transient

    public boolean isLeft() {

       return this.getLeftFlag() != 0;

    }

    public void setLeft(boolean leftFlag) {

       if(leftFlag)

           this.setLeftFlag(1);

       else

           this.setLeftFlag(0);

    }

其int是映射到DB的,一般在方法名用Flag做標記,其設置訪問權限為protected,是爲了是只能在繼承該類的類中能訪問,另外還提供了is和set方法,主要是給業務邏輯層調用的。

原文地址:https://www.cnblogs.com/javawebsoa/p/3076901.html