1
我在PostgreSQL數據庫的history
表中有一個枚舉類型字段current_status
。枚舉定義爲:在Restful客戶端中檢索枚舉的PostgreSQL類型
CREATE TYPE et_status AS ENUM
('PENDING', 'SUCCESS', 'LATE', 'EARLY', 'FAILED', 'IN_PROGRESS', 'EXPIRED');
我增加在服務器側枚舉類型和作了一些修改對相關領域的類型和getter和setter。這看起來像:
@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;
}
}
當測試Web服務的,我得到以下錯誤:
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].
搜索互聯網產生this solution,但它似乎需要使用org.hibernate.annotations的。 TypeDef,我似乎沒有在我的安裝。
問題:通過RESTful Web服務將PostgreSQL枚舉類型轉換爲Java枚舉類型的正確方法是什麼?
數據庫:在PostgreSQL 8.4
應用服務器:3.1.2.2 Glassfish的
IDE:的NetBeans 7.2
JDK 7的更新7
謝謝。工作很好。 – andand