2017-10-16 67 views
0

我想設置Arraylist在保存到數據庫時的數據類型。 例如: 我用註釋的字符串變量,當它被保存到數據庫中,它的數據類型是TEXT如何在hibernate註釋中設置Arraylist <String>的數據類型?

@Column(columnDefinition = "TEXT") 
String matKhau; 

所以,我不知道任何方式如ArrayList做同樣的事情:

@CollectionOfElements 
//add some annotation to set data type in here 
ArrayList<String> ghiChu = new ArrayList<String>(); 

因爲我救越南字符串到數據庫中,所以它具有的charset = UTF-8,但是當我嘗試了上述這段代碼,它保存和數據類型是BLOG,這就是問題。我想將BLOG更改爲LONGTEXT,那麼我該如何處理這個問題?對不起,我的壞英文。

+0

不要將具體類型作爲變量來使用,*絕對*不要在JPA中使用它們;改用'List '代替。大多數JPA提供者將使用動態代理來顯着提高性能和功能。 – chrylis

回答

0

請勿使用@CollectionOfElements(已棄用)。使用JPA的@ElementCollection。您可以使用相同的@Column註釋爲基本類型集合(如String)指定列定義。

所以這裏是一個示例。

@ElementCollection 
@Column(columnDefinition="TEXT") 
List<String> ghiChu = new ArrayList<String>(); 
+0

我試過使用你的指令,但是當我在下面運行這個測試時,它給我一個錯誤:錯誤的字符串值:'\ xAC \ xED \ x00 \ x05sr ...'在第1行的列'ghiChu'。測試是: ArrayList string = new ArrayList (); string.add(「這是一個測試,不要給我任何錯誤PLZ」); TestList test = new TestList(); test.setId(「02」); test.setGhiChu(string); TestListDAO.saveOrUpdate(test); –

0

我想我通過@Column(columnDefinition =「LONGBLOB」)修改解決了它的成功和在這個類中,我推get方法使用@ElementCollection(targetClass = String.class)和我感到很滿意這個。

+0

如果您使用泛型,則不需要指定targetClass。 – Ish

+0

感謝您的幫助<3 –