gpt4 book ai didi

java - 如何在 JAXRS 中将字段标记为不被 JAXB 扩展

转载 作者:行者123 更新时间:2023-12-01 04:53:28 26 4
gpt4 key购买 nike

我有两个类(class),如下:

@XmlRootElement
@PersistenceCapable(detachable="true")
public class User {

@Persistent(primaryKey="true", valueStrategy=IdGeneratorStrategy.IDENTITY)
private Long id;

private String firstname;
private String lastname;
private UserDetails userDetails;
...
}

@XmlRootElement
@PersistenceCapable(detachable="true")
public class UserDetails {
private String streetaddress;
private String address;
private String city;
private int pincode;
private Date dateofbirth;
...
}

我只需要检索用户对象,而不需要在一个 JAXRS 函数中检索 userdetails,并且在另一个 JAXRS 函数中检索用户对象及其附加的 userdetails 对象,如图所示。

//UserManager.java
public List<User> getUsers() {
javax.jdo.Query q = pm.newQuery("SELECT FROM "+ User.class.getName());
List<User> users = (List<User>) q.execute();
return users;
}

和 JAXRS 服务:

@GET
@Produces({MediaType.APPLICATION_JSON})
public List<User> getUsers() { //Retrieves all users and user details
UserManager um=new UserManager(); //working perfectly
return um.getUsers();
}

@GET
@Produces({MediaType.APPLICATION_JSON})
public List<User> getUsers() { //should retrieve user only, but how?
UserManager um=new UserManager();
return ?????
}

如何防止 UserDetails 对象被 JAXRS 和 JAXB 扩展为第二个函数???

最佳答案

如果您从两个函数返回相同的类型,那么 jaxb 无法帮助您隐藏一个方法中的信息并在第二个方法中显示。

有两种方法可以实现此目的:

1) 要么从不聚合用户详细信息的第二个函数返回不同的用户对象。2) 在第二个函数中编写一个不填充用户详细信息数据的查询。

关于java - 如何在 JAXRS 中将字段标记为不被 JAXB 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com