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?
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:
@ElementCollection
@CollectionOfElements
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% Wie ich in diesen Artikel
Wenn Sie also IntArrayType
folgendermaßen definieren:
Du brauchst auch ArraySqlTypeDescriptor
:
Und die IntArrayTypeDescriptor
:
Der Großteil der Behandlung von Java-zu-JDBC-Typen ist in der Basisklasse AbstractArrayTypeDescriptor
enthalten:
AbstractArrayTypeDescriptor
beruht auf ArrayUtil , um die Java-Array-Tiefkopier-, Wrapping- und Unwrapping-Logik zu verarbeiten.
Nun werden Sie die Zuordnung wie folgt aussehen:
%Vor%Tags und Links java hibernate java-ee postgresql