Hibernate

@Entity(name = "T_SYS_LOGIN")//將pojo類標記成實體,能夠指定一個name屬性,指定實體類的名稱。默認一該類的類名做爲實體類的名稱
public class SysLogin extends BaseBean{
   /* 主鍵 */
    @Id
    @GeneratedValue(generator = "uuid")自動生成值
    //genetator:用於配合GenerationType.SEQUENCE、GenerationType.TABLE使用
    @GenericGenerator(name = "uuid", strategy = "uuid")兩個屬性:一、name:設置主鍵生成器的名稱,這個名稱能夠被@GeneratedValue的generarot引用。   
   二、strategy:必須屬性,用於設置主鍵的生成策略

    @Column(name = "OID")//@Clounm:指定某個屬性所映射的數據列的詳細信息(列名,字段長度等)name:指定該列的列名。默認值是成員的變量名
    private String oid;

   /* 所屬應用OID */
    @Column(name = "APP_OID", length = 64)
    private String appOid;

    /* 所屬應用 */
    @ManyToOne(targetEntity = SysApp.class, cascade = CascadeType.REFRESH)
    //targetEntity:指定關聯實體的類名(默認反射判斷實現,能夠不指定)
    //cascade:級聯.級聯在編寫觸發器時常常用到,觸發器的做用是當 主控表信息改變時,用來保證其關聯表中數據同步更新
    //CascadeType.ALL(指定全部的持久化操做都級聯到關聯實體) 
    //CascadeType.MERGE:級聯合並(級聯更新)將MERGE操做級聯到關聯實體.指A類新增或者變化,會級聯B對象(新增或者變化) 
    //CascadeType.PERSIST,級聯新增(又稱級聯保存)只有A類新增時,會級聯B對象新增。若B對象在數據庫存(跟新)在則拋異常(讓B變爲持久態)
    //CascadeType.REFRESH,級聯刷新:獲取order對象裏也同時也從新獲取最新的items時的對象。對應EntityManager的refresh(object)方法有效。即會從新查詢數據庫裏的最新數據   (用的比較少)
    //CascadeType.ALL:以上四種都是
    //CascadeType.REMOVE:級聯刪除:對order對象刪除也對items裏的對象也會刪除。對應EntityManager的remove方法
    //綜上所述:通常的,用CascadeType.MERGE:級聯合並(級聯更新)就能達到級更新同時又穩定不報錯。 
    @HibernateJoinColumn(name = "APP_OID", insertable = false, updatable = false)
    //進行外鍵映射
    name:指定外鍵列的列名
    insertable:指定該列是否包含在Hibernate生成的insert語句的列列表中,默認值:true
    updatable:指定該列是否包含在Hibernate生成的update語句的列列表中,默認值:true
    private SysApp sysApp;

    /* 帳號 */
    @Column(name = "ACCOUNT", length = 200)
    @BeanValidationFieldName(message = "帳號")基於註釋的校驗機制
    @NotEmpty
    @Length(min = 1, max = 30)
    private String account;
    

     /**
     * 在線狀態
     */
    @Transient 修飾不想持久保存的屬性
    private String onlineFlag;
}
相關文章
相關標籤/搜索