Java @使用摘录投影时忽略JsonBackreference
在我的Spring数据Rest应用程序中,当定义了Java @使用摘录投影时忽略JsonBackreference,java,spring-data-rest,Java,Spring Data Rest,在我的Spring数据Rest应用程序中,当定义了摘录投影时,@JsonBackReference被忽略 调用GET/foos/{id}I GET as response:(\u link元素在此省略) 鉴于: @Entity public class Foo { @Id @GeneratedValue private Long id; private String text; private String additionalText;
摘录投影时,@JsonBackReference
被忽略
调用GET/foos/{id}
I GET as response:(\u link
元素在此省略)
鉴于:
@Entity
public class Foo {
@Id
@GeneratedValue
private Long id;
private String text;
private String additionalText;
@JsonManagedReference
@OneToOne(mappedBy = "foo", cascade = ALL)
private Bar bar;
}
及
使用存储库:
@RepositoryRestResource(excerptProjection = FooPublicProjection.class)
public interface FooRepository extends CrudRepository<Foo, Long> {}
如何使Spring数据不在其自己的子节点中呈现Foo
这是一个解决方案,前提是您正在使用Jackson(我想您是这样做的)。
在我的项目中,我曾经处理所有循环关系。我认为它也能解决你的问题
@Entity
@JsonIdentityInfo(generator = JSOGGenerator.class)
public class Foo {
@Id
@GeneratedValue
private Long id;
private String text;
private String additionalText;
@JsonManagedReference
@OneToOne(mappedBy = "foo", cascade = ALL)
private Bar bar;
}
以及:
请注意,如果您的客户机是javascript,那么有一个互补的JSOG库可以自动解析JSON和解析循环。如果您使用Jackson(我想您是这样做的),这是一个解决方案。
在我的项目中,我曾经处理所有循环关系。我认为它也能解决你的问题
@Entity
@JsonIdentityInfo(generator = JSOGGenerator.class)
public class Foo {
@Id
@GeneratedValue
private Long id;
private String text;
private String additionalText;
@JsonManagedReference
@OneToOne(mappedBy = "foo", cascade = ALL)
private Bar bar;
}
以及:
请注意,如果您的客户机是javascript,那么有一个互补的JSOG库可以自动解析JSON和解析循环
{
"text": "Foo",
"additionalText": "Additional Text",
"bar": {
"text": "Bar"
}
}
@Entity
@JsonIdentityInfo(generator = JSOGGenerator.class)
public class Foo {
@Id
@GeneratedValue
private Long id;
private String text;
private String additionalText;
@JsonManagedReference
@OneToOne(mappedBy = "foo", cascade = ALL)
private Bar bar;
}
@Entity
@JsonIdentityInfo(generator = JSOGGenerator.class)
public class Bar {
@Id
@GeneratedValue
private Long id;
private String text;
@JsonBackReference
@OneToOne
private Foo foo;
}