Array mit Hibernate zuordnen

7

Kannst du mir bitte helfen, die Klasse Hbernate zu kartografieren?

%Vor%

Ich benutze PostgreSQL und den Spaltentyp n die Tabelle ist integer [] Wie soll mein Array gemappt werden?

    
danny.lesnik 02.12.2010, 06:57
quelle

4 Antworten

6

Ich habe Arrays niemals dem Hibernate zugeordnet. Ich benutze immer Sammlungen. Also, ich habe deine Klasse leicht geändert:

%Vor%     
AlexR 02.12.2010, 07:54
quelle
12

Hibernate (und JPA) kann den PostgreSQL-Array-Typ nicht direkt zuordnen. Sehen Sie diese Frage , wie Sie vorgehen müssen, wenn Sie wirklich Ihre Datenbankstruktur beibehalten müssen wie es ist. Dieser Thread enthält ein Beispiel für den erforderlichen benutzerdefinierten Typ.

Wenn Sie Ihr Schema ändern können, können Sie Hibernate eine zusätzliche Tabelle erstellen lassen, um die Sammlung zu verwalten - List<Integer> . Abhängig von der Version des Ruhezustands, den Sie verwenden:

Bozho 02.12.2010 09:50
quelle
5

Hibernate kann nur die primitiven Typen zuordnen. Überprüfen Sie unter dem org.hibernate.type-Ordner des Hibernate-JAR-Pakets. int-Array ist nicht einer von ihnen. Sie müssten also einen benutzerdefinierten Typ schreiben, der die UserType-Schnittstelle implementieren kann.

%Vor%

IntArrayUserType.class

%Vor%

Wenn Sie nach der MyClass-Entität fragen, können Sie etwas wie folgt hinzufügen:

%Vor%     
user3820369 08.10.2015 18:39
quelle
0

Wie ich in diesen Artikel , das Zuordnen eines Arrays mit Hibernate erfordert einen benutzerdefinierten Typ.

Wenn Sie also IntArrayType folgendermaßen definieren:

%Vor%

Du brauchst auch ArraySqlTypeDescriptor :

%Vor%

Und die IntArrayTypeDescriptor :

%Vor%

Der Großteil der Behandlung von Java-zu-JDBC-Typen ist in der Basisklasse AbstractArrayTypeDescriptor enthalten:

%Vor%

AbstractArrayTypeDescriptor beruht auf ArrayUtil , um die Java-Array-Tiefkopier-, Wrapping- und Unwrapping-Logik zu verarbeiten.

Nun werden Sie die Zuordnung wie folgt aussehen:

%Vor%     
Vlad Mihalcea 22.06.2017 05:52
quelle

Tags und Links