你好,请原谅我的英语!JAXB + JPA + JAX-RS,JAXB注释问题
假设我有这个实体,这个namedquery使用jaxb注释来选择名称列。
@Entity
@NamedQueries({
@NamedQuery(name = "Person.selectAll", query = "SELECT p FROM Form p"),
@NamedQuery(name = "Person.selectName", query = "SELECT p.id,p.name FROM Form p"),
});
@XmlRootElement
public class Person implements Serializable {
@Id
@Column
private int id;
@XmlElement
private String name;
@Column
@XmlElement
private String surname;
..
}
假设现在我有一个Rest方法,它执行namedquery Person.selectName并返回响应的XML或JSON代码。
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/list")
public List<Person> getList()
{
//here i execute the namedquery Person.selectName
List<Person> persons = executeNamedQuery().getList();
return persons;
}
现在的问题是在编组期间因为没有为name字段一个@XmlRootElement注释。 只有在执行了namedquery Person.selectName时,我才会输出像<Persons><Person><name>value1</name></Person><Person><name>value2</name></Person>
而不包含<surname>
标记。而且我不能使用@XmlTransient,因为namedquery“selectAll”需要那个。 如何以“优雅的方式”解决?
随着@XmlTransient注释当我执行namedquery “Person.selectAll” 的XML输出不包含''标签。 –
raid3n
2011-03-02 20:24:52
我以为你想要排除姓氏标签。您的问题指出“没有标签”。 –
2011-03-02 20:38:18
你是对的。我编辑了我的问题。谢谢。 – raid3n 2011-03-02 20:43:33