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方法,主要是給業務邏輯層調用的。