2012-09-01 55 views
0

我寫一個REST資源,我有一個對象澤西未能馬歇爾對象GET響應

@Entity 
@Table(name = "TABLE_A") 
@XmlRootElement(name = "typeA") 
public class TypeA implements GenericType{ 

@Id 
@Column(name = "COLUMN_ID") 
@GeneratedValue 
private Integer id; 

@OneToMany (mappedBy="person") 
private List<TypeB> typeBList; 

@XmlAttribute 
public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

@XmlElement(name="mytypes") 
public List<TypeB> getTypeBList() { 
    return typeBList; 
} 

public void setTypeBList(List<TypeB> typeBList) { 
    this.typeBList = typeBList; 
} 
} 

的接口沒有任何註釋的麻煩。

這是提供服務

@Path("user/{id}") 
public class PersonResourceImpl { 

@GET 
@Produces({MediaType.APPLICATION_XML}) 
public TypeA getPerson(@PathParam("id") String id) { 
    LOG.info("doGetPerson() - IN"); 

    ... get from a datasource ... 

    return retrievedPerson; 
} 

當我嘗試使用該資源的正確對象從數據庫返回,但是當它試圖馬歇爾成XML失敗消息體作家資源class not found and MIME type application/xml

這就是我爲其他對象所做的所有工作,唯一沒有做過的其他對象是@XmlAttribute標記,或許這裏有錯?

謝謝

+0

拋出的確切異常是什麼? – condit

回答

0

這是由我使用Hibernate的方式引起的。我是從數據庫加載對象並將其返回到我的休息資源,當我做空檢查資源仍然可用。

當JAXB試圖編組這個對象時,它失敗了,或者對象已經改變並且不再可用,或者當hibernate創建它時沒有正確的註解。

我解決了這個問題,方法是創建一個新的對象,並用一個hibernate返回的數據加載它。