Ked*_*ikh 2 spring json hibernate spring-data spring-data-rest
我有一个实体A,它有一些属性,并引用另一个实体B.
A{
....
@ManyToOne(fetch=FetchType.LAZY)
B b;
...
}
Run Code Online (Sandbox Code Playgroud)
对于B(B中的A的@onetomany)也是如此.它是一种双向关系.在为实体A调用Web服务时,它提供了对B实体的链接,而不是响应json中的整个对象.我希望Web服务响应JSON中的整个对象而不是链接到该相关实体.我怎样才能做到这一点?我使用springboot + spring数据jpa + hibernate作为jpa提供者+ spring 4
为了在输出JSON中嵌套相关对象,您必须使用投影.
public class User {
private String name;
private Address address;
}
public class Address {
private String street;
}
public interface UsersRepository extends JpaRepository<User, Long> {
// Custom methods
}
Run Code Online (Sandbox Code Playgroud)
会给你
{
"name": "John",
"_links": {
"self": "http://localhost:8080/users/1",
"address": "http://localhost:8080/addresses/1"
}
}
Run Code Online (Sandbox Code Playgroud)
但投影:
@Projection(name = "inlineAddress", types = { User.class })
public interface UserInlineAddressProjection {
String getName();
Address getAddress();
}
@RepositoryRestResource(excerptProjection = UserInlineAddressProjection.class)
public interface UsersRepository extends JpaRepository<User, Long> {
// Custom methods
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
{
"name": "John",
"address": {
"street": "Stormtroopers str. 1"
},
"_links": {
"self": "http://localhost:8080/users/1",
"address": "http://localhost:8080/addresses/1"
}
}
Run Code Online (Sandbox Code Playgroud)
这是您实现它的唯一方法
| 归档时间: |
|
| 查看次数: |
2947 次 |
| 最近记录: |