Spring Boot Rest Controller中与Jackson@JsonIgnore的合作MongoDB延迟加载
Cooperation MongoDB lazy loading with Jackson @JsonIgnore in SpringBoot Rest Controller
我在我的 SpringBoot
应用程序中写了一个 RestController
。我也在使用 MongoDB
。这是我的实体:
public class LocationEntity {
@Id
private String id;
private String name;
@DBRef(lazy = true)
@JsonIgnore
private UserEntity owner;
private String description;
@DBRef(lazy = true)
private List<RoleEntity> roles;
private Date date;
public LocationEntity(String name, UserEntity owner, String description, List<RoleEntity> roles, Date date) {
this.name = name;
this.owner = owner;
this.description = description;
this.roles = roles;
this.date = date;
}
}
RoleEntity
和 UserEntity
也是来自同一数据库的实体。
我的RestController
的方法returnResponseEntity
,所以里面默认使用Jackson
来序列化Object
到JSON
。
我想问一下 lazy loading 准确。如果我使用 Jackson
中的 @JsonIgnore
在序列化中忽略该字段,ORM 是否不会从数据库中获取 "lazy fields"?
提前感谢您的帮助!
ORM 只会在需要时获取那些延迟加载的字段。这意味着如果您指示 Jackson 在序列化期间忽略它们(使用 @JsonIgnore
注释),ORM 将不会获取它们。
我在我的 SpringBoot
应用程序中写了一个 RestController
。我也在使用 MongoDB
。这是我的实体:
public class LocationEntity {
@Id
private String id;
private String name;
@DBRef(lazy = true)
@JsonIgnore
private UserEntity owner;
private String description;
@DBRef(lazy = true)
private List<RoleEntity> roles;
private Date date;
public LocationEntity(String name, UserEntity owner, String description, List<RoleEntity> roles, Date date) {
this.name = name;
this.owner = owner;
this.description = description;
this.roles = roles;
this.date = date;
}
}
RoleEntity
和 UserEntity
也是来自同一数据库的实体。
我的RestController
的方法returnResponseEntity
,所以里面默认使用Jackson
来序列化Object
到JSON
。
我想问一下 lazy loading 准确。如果我使用 Jackson
中的 @JsonIgnore
在序列化中忽略该字段,ORM 是否不会从数据库中获取 "lazy fields"?
提前感谢您的帮助!
ORM 只会在需要时获取那些延迟加载的字段。这意味着如果您指示 Jackson 在序列化期间忽略它们(使用 @JsonIgnore
注释),ORM 将不会获取它们。