2014-12-31 69 views
2

休眠我有表一列NVARCHAR2,我有我的建立與對象Hibernate註解,當我想要插入到數據庫或從數據庫獲取的結果是類似的東西「??????? 「, 我已經實現了一個自定義方言如下,但它沒有奏效。與NVARCHAR2

public class CustomOracleDialect extends Oracle10gDialect{ 

    public CMSCustomOracleDialect() { 
     registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName()); 
     registerColumnType(Types.VARCHAR, "nvarchar2($1)"); 
     registerColumnType(Types.CLOB, "nclob"); 
     registerColumnType(Types.NCLOB, "nclob"); 
    } 

} 

回答

2

如何在對象中映射列?以下映射工作

@Column(name = "PHONE_NUMBER", nullable = false, columnDefinition = "nvarchar2 (2000)") 
public String getPhoneNumber() { 
    return this.phoneNumber; 
} 

請注意,這是JPA @Column註釋。調用電話對象上的entityManager.persist()。

3

可能有點晚,但我剛剛遇到這個問題藏漢,我發現可以用

@Nationalized 

@Type(type="org.hibernate.type.StringNVarcharType") 

,讓您的元素使用org.hibernate.type.StringNVarcharType代替註釋你的Hibernate類的VARCHAR類型串

其被導入休眠中釋放4.1.10及以上。所以它正確使用NVarChar2類型,否則它會默認回VarChar2,然後丟失你的國際字符。

休眠吉拉這個地方得到解決:https://hibernate.atlassian.net/browse/HHH-5869

和jboss-Hibernate文檔: https://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch08.html#value-national-character-types

+0

你是男人。我使用了屬性並解決了我的問題。 – keni

相關問題