JPA 和双向多对多关系的无限递归(堆栈溢出)

Infinite recursion (Stackoverflow) with JPA and Biderectional ManyToMany Relantionship

我有一个 Spring Boot 1.3.5-RELEASE 应用程序,它使用 JPA 将我的 USERS 与具有 Bi-directional ManyToMany 关系的 ROLES 相关联。

User

@Table(name = "Users")
@Entity
public class User extends BaseEntity {

    @NotEmpty
    @Column(unique = true)
    private String username;

    @NotEmpty
    private String password;

    @JoinColumn(name = "user_iid")
    @OneToMany  
    private Set<UserRole> userRoles;

    //getters and setters

UserRole (intermediary table)

@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "user_iid", "role_iid" }))
@Entity
public class UserRole extends BaseEntity {

    @RestResource(exported = false)
    @ManyToOne
    @NotNull    
    private User user;

    @ManyToOne
    private Role role;  

    //getters and setters

Role

@Entity
public class Role extends BaseEntity {

    @NotEmpty
    @Column(unique = true)
    private String name;

    @JoinColumn(name = "role_iid")
    @OneToMany
    private Set<UserRole> userRoles;

    //getters and setters

BaseEntity 是一个带有 IdsVersion 生成器的 class。

Repository

@Repository
public interface Repository extends JpaRepository<Role, String> {

    Role findByIid(@Param("iid") final String iid);

当我 cURL 一个 localhost:8080/roles/search/findByIid?iid=1 时,我得到一个 Whosebug。如果对象不存在,应用程序响应正常。

我已经试过了 @JsonIgnore 但还是不行。

谢谢

我得到了答案。

我更新了 Spring Boot to 1.4.2-RELEASE(这是最后一个),一切都很顺利。我认为通过更新它更新了 JPA 和 Hibernate 并使它们更好地处理那些 ManyToMany 关系。