我有一个带有助手列的用户实体。
每个用户都有一个助手,但也有圈子。
例如:用户A的助手是用户B,用户B的助手是 用户A。
如果我使用@ManyToOne和@OneToMany批注,那么在将对象转换为JSON时,甚至是@JsonManagedReference和 @JsonBackReference没有帮助。
BaseEntity:
@MappedSuperclass
@Data
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@Version
private int version;
}
用户:
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@EqualsAndHashCode(callSuper = true)
@Table(name = "Users")
public class User extends BaseEntity {
@Column
private String username;
@Column
private String name;
@JsonManagedReference
@ManyToOne
@JoinColumn(name = "assistant_id")
private User assistant;
@JsonBackReference
@OneToMany(mappedBy = "assistant")
private Set<User> assistants;
}
Spring是否有解决此问题的机会?
答案 0 :(得分:0)
@JsonManagedReference/@JsonBackReference
将无济于事,因为即使未对“反向”引用进行序列化,“正向”引用仍然可以形成一个循环。
您想要的可能是 ,因为分配给User
属性的assistant
将被序列化而没有自己的 assistant
属性(以便任何周期中断)。本质上,除了A
和B
是同一类之外,您与here的问题相同。
除了我所链接的问题中描述的解决方案之外,您还需要指定序列化对象时使用哪个@JsonView
。请参见“在Spring中使用JSON视图”一节here。
答案 1 :(得分:0)
您可以基于同一张表创建助手实体并加入吗?