所以我尝试使用Spring webFlux并拥有以下代码:
@Override
public Flux<? extends AnimalDatabaseEntity> queryAnimals() {
return async(animalsRepository.findAll().stream());
}
private <T> Flux<T> async(Stream<T> stream) {
return Flux.fromStream(stream).publishOn(scheduler);
}
我得到无限递归的问题,因为“ AnimalDatabaseEntity ”具有字段 animalFeatures 。
@Entity(name = "animals")
public class AnimalDatabaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Enumerated(EnumType.STRING)
@Column(name = "animal_type")
private AnimalType animalType;
@Column(name = "number_of_legs")
private Integer numberOfLegs;
@Column(name = "is_pet")
private boolean isPet;
@OneToMany(mappedBy = "animalDatabaseEntity", fetch = FetchType.EAGER)
private List<AnimalFeatureEntity> animalFeatures;
}
我真的不知道为什么这不起作用???
答案 0 :(得分:0)
我的最佳猜测是AnimalFeatureEntity
包含类型为AnimalDatabaseEntity
的变量,该变量在序列化时引用回List<AnimalFeatureEntity>
,从而导致无限递归。
如果适合您的用例,可以通过向@JsonIgnore
添加AnimalDatabaseEntity
来防止它。
但是,如果您想保留双向关系,则可以使用@JsonManagedReference/@JsonBackReference
或@JsonIdentityInfo
。
有关用法示例,请参见this article