1. 程式人生 > >JPA利用Column註釋自定義約束

JPA利用Column註釋自定義約束

最近迷上了JPA,以至於什麼東西都要用EJB3的一套外加JPA來做持久層。今天遇到一個小問題,就是怎麼在Column註釋裡面進行check約束。

看了看JPA的Doc,沒有發現和check有關的屬性,只找到了Column裡面有一個columnDefinition,貌似是定義欄位的,於是就望文生義,自己先把check約束寫上試試:

 

然後釋出到JBoss,報錯了:

2010-06-08 17:06:12,047 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] (main) Unsuccessful:

create table LIB_BOOK (

bookId integer not null auto_increment,

available CHECK(available >=0 AND available <= 32) not null, --問題

title varchar(255) not null,

total integer not null,

catalog_catalogId integer not null,

prima ry key (bookId));

少了個數據型別的定義,這下就好說了,改一下columnDefinition就行了:

 

重新執行下,還是出錯了,再次看看報錯資訊:

create table LIB_BOOK (

bookId integer not null auto_increment,

available SMALLINT CHECK(available >=0 AND available <= 32) not null, --問題

title varchar(255) not null,

total integer not null,

catalog_catalogId integer not null,

primary key (bookId));

還出錯了,貌似是not null的原因,乾脆把非空約束寫到check裡面:

 

釋出到JBoss,問題解決了。

其實這個問題用hibernate就簡單了,hibernate在org.hibernate.annotations包裡面就提供了一個Check註釋,用來進行check約束。

相關推薦

JPA利用Column註釋定義約束

最近迷上了JPA,以至於什麼東西都要用EJB3的一套外加JPA來做持久層。今天遇到一個小問題,就是怎麼在Column註釋裡面進行check約束。 看了看JPA的Doc,沒有發現和check有關的屬性,只找到了Column裡面有一個columnDefinition,貌似是定義欄

對ViewModel定義約束

reat ons turn lin amp equal 密碼 員工 listitem 有時候我們常要對一些屬性進行自定義的約束,可以這麽做 using ListSys.Entity; using System; using System.Collections; usin

[轉]CentOS7利用systemctl新增定義系統服務

原文:https://www.cnblogs.com/saneri/p/7778756.html CentOS7自定義系統服務 CentOS7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,需要開機不登陸就能執行的程式,存在系統服務

建立表、修改表、刪除表的方法 ,建立主鍵約束、外來鍵約束、使用者定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用

撰寫人——軟工二班——陳喜平 – 實驗內容: – 一、建立表 – 建立圖書館管理系統所涉及的表 – 建立產品銷售系統所涉及的表 – 圖書表book(bid,bname,price,qty) – 書庫表lib(lid,lname,address) – 讀者表reader

eclipse中搭建springboot學習(8)---JPA使用2(定義sql)

PersonRepository package com.example.demo1019.dao; import javax.transaction.Transactional; import

利用Spring AOP定義註解解決日誌和簽名校驗

一、需解決的問題 部分API有簽名引數(signature),Passport首先對簽名進行校驗,校驗通過才會執行實現方法。     第一種實現方式(Origin):在需要簽名校驗的接口裡寫校驗的程式碼,例如: boolean isValid = accountService.val

利用commons-pool2定義物件池

利用commons-pool2自定義物件池 commons-pool2是Apache下一個開源的公共資源池。我們可以根據它來快速的建立一個自己的物件池。 1. 相關概念: 連結池/物件池(ObjectPool):用於存放連結物件的一個池子(集合),通常用陣列或者Lis

利用composer新增定義類檔案

1.配置composer.json檔案 "autoload": { "classmap": [ "database", "app/

spring data jpa 關聯查詢返回定義物件

@Override public List<SimpleRights> getListByOperatorId(int operatorId) { EntityManager em = entityManagerFactor

利用阿里雲定義映象實現伺服器資料/網站快速遷移

雙十一活動臨近,各大服務商都有一定的促銷活動,確實從成本角度考慮在活動期間對於有需要雲端計算類產品的使用者而言確實是比較實惠的。如果我們個人使用者且壓根沒有搞清楚自己是否需要,那就要捂緊口袋不要被商家忽悠住。這幾天應該有看到阿里雲、騰訊雲商家的活動,比如三年付720元的阿里雲確實還是比較划算的。

利用Netty構建定義協議的通訊

在複雜的網路世界中,各種應用之間通訊需要依賴各種各樣的協議,比如:HTTP,Telnet,FTP,SMTP等等。在開發過程中,有時候我們需要構建一些適應自己業務的應用層協議,Netty作為一個非常優秀的網路通訊框架,可以幫助我們完成自定義協議的通訊。一般而言,我們制定的協議需要兩個部分:Header : 協議

JPA原生SQL(定義SQL)分頁查詢邏輯

JPA自己寫SQL查詢的話,分頁還稍微麻煩,經過測試下面方法可以: @Query(nativeQuery = true, value = "select * from goods where " +

利用AOP和定義註解進行Token校驗

因為公司業務需要每個訪問的方法校驗token,程式碼比較重複,所以就考慮利用Spring的AOP對每個方法進行token校驗。運用到了aop和自定義註解的知識。aop配置檔案 <!-- 自定義註解 --> <bean id="authTok

利用Collections.sort 定義比較器 ,對集合元素時間進行排序

1.自定義比較器public class SortClass implements Comparator { @Override public int compare(Object arg0, Object arg1) { ProjectInfo Projec

spring-data-JPA使用JpaRepository註解定義SQL查詢資料庫多表查詢

一. 首先在@Entity註解的類裡面要寫好外來鍵關係.  這個 @ManyToOne 註解可以建立外來鍵關係, 不要在自己傻傻的寫一個 private int grades_id;  寫了這個註解以後它會自動的把 Classes 這張表加上 grades_id 欄位.

CentOS7利用systemctl新增定義系統服務

CentOS 7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,需要開機不登陸就能執行的程式,存在系統服務裡,即:/usr/lib/systemd/system目錄下 每一個服務以.service結尾

JAVA 利用Comparator實現定義排序

/* 有個Person類,包括姓、名、性別、年齡屬性:現在有個需求,需要對Person進行以下規則的排序  * 誰的姓拼音靠前,誰就排前面。  * 然後對名字進行排序。如果同名,女性排前頭。  * 如果名字和性別都相同,年齡小的排前頭。  * int compare(O

已解決:idea方法註釋定義引數顯示和不在註解下不能識別註釋快捷鍵

根據網上方法註釋模板生成的方法註釋不是我想要的,只能二次自定義 新建group 如圖,File → settings → Editor → Live Templates,點選右邊的小綠加號,點選第二個選項新建group 填寫group的名稱 我填的是

利用Ext.XTemplate定義元件

Extjs提供了強大的自定義模版功能,可以通過Ext.XTemplate和Ext.Template來自定義模版。 Ext的元件固然強大,但是其生成html程式碼也很多,有時候在專案中我們可能只需要顯示一些資訊而不需要用到Ext提供的功能。這時候可以根據需求自定義一些元件,來

在native執行緒利用JNI 反射定義類--ndk開發參考2

從前面我們知道,在虛擬機器初始化後,執行Java程式碼的方法時,要先查詢到類,也就是呼叫函式FindClass。接著後面分析怎麼樣從dex檔案載入類資料到記憶體,現在開始對查詢函式FindClass進行分析,就很好理解了,因為前面介紹載入類到記憶體的流程已經很清楚。函式FindClass程式碼如下: sta