java - JSON 不返回相同类型的子对象详细信息
问题描述
我有一个 JPA 实体,它作为 ResponseEntity 从 REST 端点返回。端点返回该实体的集合 - 下面的代码
public ResponseEntity<Collection<Employee>> getAllEmployees() {
Collection<Employee> returnedEmployees = employeeService.findAll();
return new ResponseEntity<>(returnedEmployees, HttpStatus.OK);
}
Employee
实体有一个modifiedByUser
类型为 的属性User
。
当我调用端点时,它会很好地返回集合,但唯一的问题是只有集合中的第一个元素返回关于 的详细信息modifiedByUser
,其余元素只是将 id 映射到它。
样本响应
[
{
"employeeId" : 1,
"firstName" : "John",
"lastName" : "Doe",
"modifiedByUser" : {
"userId" : 1,
"firstName" : "Admin"
},
{
"employeeId" : 2,
"firstName" : "Jane",
"lastName" : "Doe",
"modifiedByUser" : 1
}
]
我希望modifiedByUser
第二个元素中的属性也显示完整的细节。
雇员.java
@Entity
@Table(name = "employee")
@Audited
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "employee_id")
private int employeeId;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@NotAudited
@OneToOne
@JoinColumn(name = "modified_by", referencedColumnName = "user_id", insertable = false, updatable = false)
private User modifiedByUser;
// getters and setters
用户.java
@Entity
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "userId")
@EntityListeners(AuditingEntityListener.class)
@Table(name = "users")
public class User implements Serializable {
private static final long serialVersionUID = -74583759743985L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private int userId;
@Column(name = "first_name")
private String firstName;
// getters and setters
解决方案
推荐阅读
- amazon-web-services - 使用自签名证书验证复制从属服务器上的主机身份
- json - Arduino 从软件串口接收数据
- jmeter - 如何让 jmeter 在很小的时间间隔内启动许多请求
- amazon-web-services - aws 策略资源中的名称前缀
- javascript - 在布尔变量之间切换
- node.js - 使用 node/express 和 passport.js 无法登录并且没有错误消息
- reactjs - 使用 React JS 进行 S3 分段上传
- google-apps-script - 用当前行中的文本替换公式的 Google Apps 脚本
- php - 在 PHP 中更新多个图像
- assembly - 在 OSX 10.6 Snow Leopard 上编译 AES-NI 指令时出现问题