如何實現JSON輸出中的某些屬性被忽略(如XML輸出的XmlTransient)?Seam 2.3 JBoss 7.1上的RESTEasy @JsonIgnore
@GET
@Path("/{companyId}")
@Produces(MediaType.APPLICATION_JSON)
public PortfolioCompany getCompany(@PathParam("companyId") long id);
我一直在使用Seam 2.3中的RESTeasy支持,在JBoss 7.1上作爲EAR部署。我開始在我的ejb-project中添加與Seam-restbay-example相同的依賴項。 對於@Produces(MediaType.APPLICATION_XML),它基本上可以正常工作,其中用@XmlTransient註釋的所有屬性都將被忽略,以防止出現一些LazyInitialisationException。 但是,如何實現@Produces(MediaType.APPLICATION_JSON)的這種行爲?
我讀過Seam默認使用Jettison,它對XML和JSON都使用@XmlTransient註解(因爲從技術上講,它從XML轉換到JSON)。但是我得到一個「由org.codehaus.jackson.map.JsonMappingException引起的:沒有發現類org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer的序列化程序」,它表明實際上它使用的是Jackson ..? 對於Jackson來說,有像@JsonIgnore這樣的註釋,但具有相同的maven依賴關係(如restbay) - 這種「無法解析爲類型」。
/**
* @return the contact
*/
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@XmlTransient // working for produces XML but not for JSON
//@JsonIgnore = unknown type
public Contact getContact() {
return contact;
}
任何人的任何經驗或提示呢?
感謝
編輯:真的沒有人有實現對使用Seam REST服務懶收藏的需要?
經過一番研究:
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property ="@id")
顯然需要採取什麼。但只有Jackson 2.x才提供。但seam2.3/jboss7的設置顯然是使用Jackson 1.9 ...