Hibernate 之 標識符產生器/映射類型

來源:互聯網
上載者:User

下午用hibernate去改善一個項目,結果出現了好多關於映射類型的問題,在網上搜的好多答案也不盡人意,後來結合著hibernate文檔以及孫衛琴老師的《hibernate逍遙記》終於解決了

hibernate 用物件識別碼(oid)來區分對象,oid是關聯式資料庫中的主鍵。

以下是《hibernate逍遙記》中介紹的8種內建標識符產生器:

下面列出hibernate 映射類型、對應的java基本類型(或者它們的封裝類)以及對應的標準sql類型

在這裡我出現的三個糾結的問題是:

  • 我用的是mysql,大文本類型資料庫中用的是text,java基本類型用的是String,而String 預設映射的是varchar類型,所以想讓String映射到text類型,必須在實體類中指出,不然匹配異常
  • 實體類中boolean類型的映射,此處的boolean類型也要像第一個問題中那樣在實體類中明確指出,否則匹配異常
  • 屬性定義為read時,get/set採用自動產生,程式出錯報sql語法錯誤,這個問題沒有解決(希望看到的能幫忙解釋一下)
以下為例子:
@Entity@Table(name="t_message")public class Message {private int id;private String content;//假使用長類型private boolean isread;@Type(type="text")  // 明確指出映射類型public String getContent() {return content;}@Id@GeneratedValue(strategy=GenerationType.AUTO)public int getId() {return id;}public void setContent(String content) {this.content = content;}public void setId(int id) {this.id = id;}@Type(type="true_false")//指出映射類型public boolean isIsread() {return isread;}public void setIsread(boolean isread) {this.isread = isread;}}

以上總結,hibernate 映射類型是資料庫和java類型之間映射的橋樑,當一個java類型對應多個hibernate映射類型的場合,有時必須顯式指定hibernate映射類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.