내가 JPA (EclipseLink가 구현) 먼저 시도를하고와 포스트 그레스 열거에 열거하고 꽤 붙어 느낌 : PostgreSQL의에서매핑 자바는 EclipseLink
내가 꽤 잘 다음 DB 스키마
CREATE TYPE mood AS ENUM ('sad', 'happy', 'enthusiastic');
CREATE TABLE person (
pk BIGINT PRIMARY KEY,
name VARCHAR NOT NULL,
mood mood NOT NULL
);
CREATE SEQUENCE person_pk_seq INCREMENT BY 100 MINVALUE 100;
작동이있는
:이 삽입INSERT INTO PERSON (PK, mood, name) VALUES (3, 'happy', 'Joe')
가 (. 문자열 차이가 없습니다으로 PK를 커밋)를 JPA 측면에서
같이, 나는 다음과 같은 클래스를 썼다 84,449,769,
그러나,이 예제가 작동하지 않습니다와 나는 문제가 무엇인지 단서가 없다 :
[EL Warning]: 2012-06-05 15:28:20.646--UnitOfWork(845463623)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.BatchUpdateException: Batch-Eintrag 0 INSERT INTO PERSON (PK, mood, name) VALUES ('801', 'enthusiastic', 'Joe') wurde abgebrochen. Rufen Sie 'getNextException' auf, um die Ursache zu erfahren.
Error Code: 0
Call: INSERT INTO PERSON (PK, mood, name) VALUES (?, ?, ?)
bind => [3 parameters bound]
나는 varchar
에 테이블 person
의 열 유형을 변경하고 @Convert
및 @ObjectTypeConverter
모든대로 작동 주석을 제거하면 예상했다.
아이디어가 있으십니까?
이것은 구현입니다. 현재 사용하고 있습니다. 그러나 이렇게하려면 'mood' 열이 varchar/text/String 유형이어야합니다. – Beasterfield
postgresql에서 열거 형을 String으로 나타내는 데는 아무런 문제가 없습니다. – zellus
enum-types를 사용하면 char 유형 에서처럼 선택/결합이 더 빨라지 길 바래요. – Beasterfield