zoukankan      html  css  js  c++  java
  • 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方法,主要是給業務邏輯層調用的。

  • 相关阅读:
    「BZOJ 1297」「SCOI 2009」迷路「矩阵乘法」
    「BZOJ 1831」「AHOI 2008」逆序对「贪心」
    「BZOJ 1791」「IOI 2008」Island「基环树」
    WC2019 冬眠记
    「ZOJ 1354」Extended Lights Out「高斯消元」
    「BZOJ 3270」博物馆「高斯消元」
    「学习笔记」泰勒级数
    获取iPhone的UDID
    面试题
    Java的post(HTTPS)请求-----接口测试
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3076901.html
Copyright © 2011-2022 走看看