2014-01-07 32 views
1

鑑於JPA-RS示例here,我增加了對地址的新屬性添加到Student類:屬性與@Embeddable和@XmlPath(「」)

@Embedded 
@XmlPath(".") 
private Address address; 

Address類:

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
@Embeddable 
public class Address implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private String streetName; 
    private int streetNumber; 
    private int zipCode; 
    private String city; 

    // constructor, getters, etc. 
} 

當訪問元數據URL http://host:port/context-root/persistence/persistence-unit/metadata/entity/Student,它所描述的模型,而不會嵌入新添加的屬性的屬性:

{ 
    "name": "Student", 
    "attributes": [ 
    { 
     "name": "id", 
     "type": "Long" 
    }, 
    { 
     "name": "name", 
     "type": "String" 
    }, 
    { 
     "name": "address", 
     "type": "Address" 
    }, 
    { 
     "name": "courses", 
     "type": "List<Course>" 
    } 
    ], 

但發送這樣一個對象時,它也使用GET返回對象以這種形式,它的工作像預期一樣:

{ 
    "name": "John", 
    "streetName": "Rue Doe", 
    "streetNumber": 123, 
    "zipCode": 45678, 
    "city": "Samplesten" 
} 

我的問題:這是一個預期的行爲?比方說,我想使用元數據api,讓用戶知道他們必須使用的一般模型。正確的設計極具誤導性。同樣適用於重命名屬性。

回答

1

這是JPA-RS中的一個錯誤。我已經打開了以下錯誤針對此問題:

+0

謝謝布萊斯,我對這裏的SO JPA-RS的另一個懸而未決的問題。我參加了Sean Smith的一次演講,鼓勵觀衆使用JPA-RS。但令人遺憾的是,這個文檔並不是很廣泛,在eclipse.org上EL論壇上的問題很少得到回答。我是否錯過了一個重要的信息渠道,我可以從中獲得快速幫助?謝謝 – Imperative