【发布时间】:2019-05-17 19:39:56
【问题描述】:
我想返回一个带有来自两个不同类的信息的 JSON 对象。
就像我想将 User 类中的用户名和 Role 类中的 rolename 放在一个 JSON 对象中。
我当前的代码:
@Entity
@DynamicUpdate
public class User {
private String username;
private String phone;
private String email;
private Set<Role> role;
}
@Entity
public class Role {
private int idRole;
private String name;
}
@Projection(name = "CustomUser", types = {User.class})
public interface CustomUser {
String getUsername();
RoleTest getRole();
interface RoleTest {
String getName();
}
}
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
List<CustomUser> findAllBy();
}
@Controller
@RequestMapping
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
@ResponseStatus(HttpStatus.ACCEPTED)
public @ResponseBody List<CustomUser> getAllUsers() {
return userRepository.findAllBy();
}
}
我目前得到的:
{
"role": {
"name": "ADMIN"
},
"username": "test"
}
但是,我的目标是得到这样的东西:
{
"role": "ADMIN",
"username": "test"
}
【问题讨论】:
-
当用户拥有更多角色时应该输出什么?
-
我想我不需要那个。是的,现在可能,但我必须改变它。这对我的问题有帮助吗?
标签: java spring-data-jpa spring-projections