2017-10-16 6 views
0

Je souhaite définir le type de données de Arraylist lors de son enregistrement dans la base de données. Par exemple: J'utilise l'annotation pour la variable chaîne et quand il a été enregistré dans la base de données, le type de données de celui-ci est un texteComment définir le type de données de Arraylist <String> dans l'annotation d'hibernation?

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

Alors, je ne sais pas comment faire les mêmes choses avec ArrayList comme :

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

Parce que je sauver chaîne vietnamienne dans la base de données, il a donc charset = UTF-8, mais lorsque je tente ce code ci-dessus, il sauvé et le type de données est BLOG, et c'est le problème. Je veux changer le BLOG en LONGTEXT, alors que dois-je faire pour ce problème? Désolé, mon mauvais Eng.

+0

Ne pas utiliser les types de béton comme variables en général, et * définitivement * ne pas les utiliser avec JPA; utilisez 'List ' à la place. La plupart des fournisseurs JPA utiliseront des proxies dynamiques pour améliorer sensiblement les performances et la fonctionnalité. – chrylis

Répondre

0

N'utilisez pas @CollectionOfElements (il est déjà obsolète). Utilisez JPA @ElementCollection. Vous pouvez utiliser la même annotation @Column pour spécifier la définition de colonne pour votre collection de types de base tels que String.

Voici donc un exemple.

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

J'ai essayé d'utiliser votre instruction mais quand j'exécute ce test ci-dessous, il m'envoie une erreur: Valeur de chaîne incorrecte: '\ xAC \ xED \ x00 \ x05sr ...' pour la colonne 'ghiChu' à la ligne 1. le test est: ArrayList string = new ArrayList (); string.add ("ceci est un test, ne me donnez pas d'erreur plz"); TestList test = new TestList(); test.setId ("02"); test.setGhiChu (chaîne); TestListDAO.saveOrUpdate (test); –

0

Je pense que je l'ai résolu succès par les changements @Column (columnDefinition = « LONGBLOB ») et utilise @ElementCollection (targetClass = String.class) dans cette classe où je pousse la méthode get et je suis satisfait de cette .

+0

Vous n'aurez pas besoin de spécifier targetClass si vous utilisez des génériques. – Ish

+0

merci pour votre aide <3 –