0

REST リソースを作成していますが、オブジェクトに問題があります

@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 にマーシャリングしようとすると、 Message body writer for class not found および MIME タイプ application/xml で失敗します

これは私が他のオブジェクトに対してしなければならなかったすべてであり、それらは機能します。他のオブジェクトで行っていないのは @XmlAttribute タグだけです。何か問題があるのでしょうか?

ありがとう

4

1 に答える 1

0

これは、Hibernate の使用方法が原因でした。私はデータベースからオブジェクトをロードし、それをRestリソースに戻しました.nullチェックを行った時点で、リソースはまだ利用可能です。

JAXB がこのオブジェクトをマーシャリングしようとすると失敗します。オブジェクトが変更されて使用できなくなっているか、hibernate がオブジェクトを作成するときに正しいアノテーションがありません。

新しいオブジェクトを作成し、休止状態から返されたデータをロードすることでこれを解決しました。

于 2012-09-03T09:17:28.857 に答える