ANSWER
我将解决有关此博客的问题Jackson – Bidirectional Relationships
谢谢你。
更新2
问题在于 JsonBackReference 和 JsonManagedReference 注释。 通过我的双向关系,我必须使用JsonBackReference和JsonManagedReference显式选择一种方式进行序列化。 但是在这里,我将使用对立方式“ Parent-> Child ”进行特定的请求(默认使用“ Child-> Parent ”的方式) 当我反转这两个注释时,我的JSON就是我正在寻找的,因为特殊的需求。 关于如何以双向关系使用JACKSON的任何想法?
谢谢。
更新1
这是一个使用EntityGraph的简单代码(感谢@NeilStockton建议),但仍然没有在JSON中序列化lazy属性: - (
父
@Entity
public class Child {
@Id
@GeneratedValue
private Long id;
@column
private String childAttribute;
@OneToOne(optional = false, cascade = CascadeType.ALL)
@JsonManagedReference
private Parent parent;
子
public interface ParentRepository extends CrudRepository<Parent> {
@EntityGraph(attributePaths = { "child" })
//a hack to use findAll with default lazy/eager mapping
Collection<Parent> findByIdNotNull();
}
家长存储库
Hibernate:
select
parent0_.id as id1_33_0_,
child1_.id as id1_32_1_,
parent0_.parent_attribute as parent_attribute2_33_0_,
child1_.child_attribute as child_attribute2_32_1_,
from
test.parent parent0_
left outer join
test.child child1_
on parent0_.id=child1_.parent_id
where
parent0_.id is not null
生成的查询:
[ {
"id": 1
"parentAttribute": "I am the parent"
} ]
JSON(没有孩子):
{{1}}
关于如何强制Jackson Hibernate4Module序列化的任何想法? 谢谢。
我有一个Spring Boot 1.3.1后台办公室,使用JPA / hibernate来映射实体。前端是Angular2应用程序。通信是REST / JSON。 我的问题是当我有一个懒惰的关系时强迫在一些查询中加载EAGER。 solution using JOIN FETCH在DAO层(存储库)中帮助了我。 现在,实体已在控制器层中完全加载到单个查询中。 但由于Hibernate4Module ,序列化的JSON仍然不完整。
Bellow Hibernate4Module功能无法帮助: - (
欢迎任何想法。感谢。
答案 0 :(得分:1)
最后,我通过在查询的选择部分中使用带有构造函数的自定义投影解决了我的问题。在新的投影类中,没有“JsonIgnore”或任何JPA注释使得字段不被Jackson序列化。我在该预测中添加了更多数据以供使用。 希望它会有所帮助。