java - 在 JSON 响应中获取实体而不是其 ID
问题描述
我正在尝试获取Users
数据库中存在的所有实体的列表。它有另一个实体,Group
作为它的子元素,我在获得用户后需要使用它。
用户.java:-
@Data
@Entity
@Table(name = "user")
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false)
private Integer userId;
@Column(name = "name", nullable = false, unique = true)
private String name;
@Column(name = "photo_url")
private String photoURL;
@Column(name = "email", nullable = false)
private String email;
@OneToMany(targetEntity = Group.class, mappedBy = "admin", fetch = FetchType.LAZY, cascade = {
CascadeType.MERGE,
CascadeType.REFRESH
})
private List<Group> owningGroup;
// Other functions
}
Group.java:-
@Data
@Entity
@Table(name = "room")
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "name", nullable = false, unique = true)
private String name;
@Column(name = "photo_url")
private String photoURL;
@ManyToOne(cascade = {
CascadeType.MERGE,
CascadeType.REFRESH
})
@JoinColumn(name = "admin_id", nullable = false)
private User admin;
// Other functions
}
我从中获取“用户”实体的服务类:-
@Service
public class UserServiceImpl implements UserService {
@Autowired
private final UserRepository userRepository;
@Override
public List<User> getAllUsers() {
return this.userRepository.findAll();
}
}
当我请求获取所有用户时,这就是我得到的:
{
"@id": 1,
"userId": 1,
"name": "Devian Sonato",
"photoURL": null,
"email": "deviansonato@gmail.com",
"owningGroup": [
2
]
}
正如您在owningGroup
我得到一个 int 值中看到的那样id
,是实体的而不是实体本身。
起初,我认为这是因为我已设置FetchType
为Lazy
但即使在设置为之后Eager
我仍然获得 ID 而不是实体。
我在这里犯了什么错误?我需要单独获取组还是不应该将 Group-id 列表保留在User
对象中?
解决方案
所有代码都是正确的,你可以试试下面的代码,希望它对你有帮助。
@OneToMany(targetEntity = Group.class, mappedBy = "admin", fetch = FetchType.LAZY, cascade = CascadeType.All)
private List<Group> owningGroup;
推荐阅读
- javascript - youtube 嵌入视频自动播放不适用于谷歌浏览器中未静音的声音,但它适用于 Firefox
- makefile - SDL + 花栗鼠 CMake 配置
- java - 即使在Java中初始化子类后,静态变量的值也不会改变
- c# - XMLSCHemaSet.Add 在 Visual Studio 2017 中失败
- excel - 如何在不打开 Visual Basic 编辑器的情况下执行 VBA 代码
- angular - 使用选定的下拉菜单提交表单数据
- r - 根据作为另一个数据帧的行给出的条件有效地过滤数据帧
- android - 半透明活动中的退出过渡
- sql - 连接两个表时索引如何提高性能
- css - 我的根组件的样式未应用于我的 Angular 应用程序