2012-10-15 2 views
1

PostgreSQL 데이터베이스의 테이블 에 current_status 열거 형 필드가 있습니다. Restful 클라이언트에서 열거 된 PostgreSQL 유형 검색

CREATE TYPE et_status AS ENUM 
    ('PENDING', 'SUCCESS', 'LATE', 'EARLY', 'FAILED', 'IN_PROGRESS', 'EXPIRED');

제가

서버 측에서 열거 타입을 추가하고 해당 필드 유형 및 게터와 세터 일부 변경 : 같이 열거 정의된다.
@Entity 
@Table(name = "history") 
@XmlRootElement 
@NamedQueries({ ... }) 
public class History implements Serializable { 
    public enum StatusType implements Serializable 
     {PENDING, SUCCESS, SUCCESS_LATE, SUCCESS_EARLY, 
     FAILED, IN_PROGRESS, EXPIRED}; 

... 

    @Lob 
    @Column(name = "current_status") 
    private StatusType currentStatus; 

... 

    public StatusType getCurrentStatus() { 
     return currentStatus; 
    } 

    public void setCurrentStatus(StatusType currentStatus) { 
     this.currentStatus = currentStatus; 
    } 
} 

웹 서비스를 테스트 할 때, 나는 다음과 같은 오류 얻을 :이처럼 보이는 인터넷 this solution을 굴복 검색

The object [PENDING], of class [class org.postgresql.util.PGobject], from mapping 
[org.eclipse.persistence.mappings.DirectToFieldMapping[currentStatus-->history.current_status]] 
with descriptor [RelationalDescriptor(entities.History --> [DatabaseTable(history)])], 
could not be converted to [class java.lang.Integer].

을하지만 org.hibernate.annotations의 사용을 필요로 나타납니다. TypeDef는 설치에없는 것 같습니다.

질문 : RESTful 웹 서비스를 통해 PostgreSQL 열거 형을 Java 열거 형으로 변환하는 적절한 방법은 무엇입니까?

데이터베이스 : PostgreSQL의 8.4
응용 프로그램 서버 : 글래스 피시 3.1.2.2
IDE : 넷빈즈 7.2
JDK : 7 업데이트 7

답변

1

@Lob를 사용하지 마십시오, 대신 @Enumerated (EnumType.STRING를) 시도 .

그러나 자바의 이름이 postgresql의 이름과 정확히 일치하는지 확인해야합니다 (현재 코드에없는 이름).

+0

감사합니다. 잘됐다. – andand

관련 문제