[英]how to define char(2) column in hibernate hbm.xml?
您必須修改一些hibernate遺留代碼,我應該定義一個SQL char(2)列(char(2)主鍵的外鍵)。
我的定義文件包含:
<property
name="language"
type="char"
update="true"
insert="true"
column="LANGUAGE"
length="2"
/>
但是hibernate生成:
+---------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+----------------+
(...)
| LANGUAGE | char(1) | YES | | NULL | |
+---------------------+--------------+------+-----+---------+----------------+
外鍵表是這樣的:
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| LANGUAGE | char(2) | NO | PRI | NULL | |
(...)
+--------------+--------------+------+-----+---------+-------+
使用:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.1.GA</version>
</dependency>
Hibernate中的char
類型不映射到String
,它映射到Java中的char
或Character
(見6.1.1.2 )。 碰巧使用char(1)
作為表中的基礎列類型來支持DBMS; 巧合的是,它似乎只是忽略了長度(但其原因實際上是無關的)。
你必須使用string
作為類型(因此它映射到Java String
),然后你必須告訴它使用char(2)
存儲。 一種選擇是顯式指定sql-type
,例如:
<property name="language" type="string" update="true" insert="true">
<column name="LANGUAGE" sql-type="char(2)"/>
</property>
或者只是手動調整表格,然后將其從varchar(2)
更改為char(2)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.