Hibernate를 사용하여 숫자 PostgreSQL 배열을 숫자 Java 배열에 매핑하려고 하면 다음과 같은 결과가 발생합니다. 데이터베이스 쿼리 중 예외 발생.
이 문제를 해결하려면 다음 단계를 따르세요.
<code class="xml"><dependency> <groupId>com.vladmihalcea</groupId> <artifactId>hibernate-types-52</artifactId> <version>${hibernate-types.version}</version> </dependency></code>
Java 클래스에서 매핑하는 데 사용할 사용자 정의 Hibernate 유형을 지정합니다. 배열:
<code class="java">@Type(type = "string-array") @Column(name = "sensor_names", columnDefinition = "text[]") private String[] sensorNames; @Type(type = "int-array") @Column(name = "sensor_values", columnDefinition = "integer[]") private int[] sensorValues;</code>
StringArrayType 및 IntArrayType 클래스는 내장되어 있지 않습니다. 다음과 같이 생성해야 합니다:
<code class="java">@TypeDef( name = "string-array", typeClass = StringArrayType.class ) @TypeDef( name = "int-array", typeClass = IntArrayType.class )</code>
배열 값이 있는 엔터티를 유지할 때 Hibernate는 다음과 같은 SQL 문을 생성합니다. 배열을 올바르게 매핑하세요.
다음 테이블 구조를 가정:
<code class="sql">CREATE TABLE event ( id int8 not null, version int4, sensor_names text[], sensor_values integer[], primary key (id) );</code>
다음 Java 클래스에 매핑할 수 있습니다:
<code class="java">@Entity(name = "Event") @Table(name = "event") public static class Event extends BaseEntity { @Type(type = "string-array") @Column(name = "sensor_names", columnDefinition = "text[]") private String[] sensorNames; @Type(type = "int-array") @Column(name = "sensor_values", columnDefinition = "integer[]") private int[] sensorValues; //Getters and setters omitted for brevity }</code>
배열 값이 있는 엔터티를 삽입하면 Hibernate는 다음과 같은 SQL 문을 생성합니다.
<code class="sql">INSERT INTO event ( version, sensor_names, sensor_values, id ) VALUES ( 0, {NULL}, {NULL}, 0 ); INSERT INTO event ( version, sensor_names, sensor_values, id ) VALUES ( 0, {"Temperature","Pressure"}, {"12","756"}, 1 );</code>
위 내용은 Hibernate를 사용하여 PostgreSQL 배열을 Java 배열에 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!