Hibernate @OneToMany join table arroja StackOverflowException

Estoy trabajando en una relación de entidad de hibernación que se configura de la siguiente manera:

Un usuario puede crear asignaciones. El usuario puede dividir la tarea con otros usuarios, dándoles tareas. Mi objective es tener un usuario que sea el siguiente:

{id: 1, asignaciones: [{name: 'test'}], partialAssignment: [{task: 'bla'}]}

Y asignaciones como esta: {id: 1, usuario: {…}, Usuarios asignados: [{…}], …}

Asignación:

@Entity @Table(name = "Assignment") data class Assignment ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false, updatable = false) val id: Long? = null, @Column(name = "name") val name: String? = null, @Column(name = "dueDate") @Temporal(TemporalType.TIMESTAMP) val dueDate: Date? = null, @ManyToOne @JoinColumn(name = "userId") var user: User? = null, @OneToMany(mappedBy = "assignment") var assignedUsers: List<AssignmentUser> = emptyList() ) 

Usuario

 @Entity @Table(name = "Users") data class User ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false, updatable = false) @JsonView(UserView.UserSummary::class) val id: Long? = null, @Column(name = "email", nullable = false) @JsonView(UserView.UserSummary::class) val email: String = "", @Column(name = "password", nullable = false) val password: String = "", @OneToMany(mappedBy = "user") val assignments: List<Assignment> = emptyList(), @OneToMany(mappedBy = "user") val partialAssignment: List<AssignmentUser> = emptyList() ) 

AssignmentUser

 @Entity @Table(name = "AssignmentUsers") data class AssignmentUser( @Column(name = "task") val task: String? = null, @Id @ManyToOne(cascade = arrayOf(CascadeType.ALL)) @JoinColumn(name = "userId") var user: User? = null, @Id @ManyToOne(cascade = arrayOf(CascadeType.ALL)) @JoinColumn(name = "assignmentId") var assignment: Assignment? = null ) : Serializable { } 

Cuando busco la class Assignment usando una llamada .findOne (id) de JPARepository, aparece una exception StackOverflow en el método Assignment.toString (). No entiendo por qué, ya que funcionó bien hasta que agregué la relación psuedo ManyToMany (usersUsers asignados).

¿Alguna idea?

    Aquí el problema no es excatly con @OneToMany.

    En caso de serialization (en este caso, la forma de cadena del object de printing), el código indicado irá en ciclo cíclico.

    En el fragment de código indicado, las relaciones cíclicas son las siguientes: 1. Asignación tiene Lista 2. Asignación tiene Usuario 3. El usuario tiene Lista 4. El usuario tiene Lista 5. Usuario Asignación tiene Usuario 6. Asignación Usuario tiene Asignación

    En hibernación, todas las asignaciones están configuradas por defecto en LAZY, por lo tanto, no causará problemas, ya que no cargaremos el object asociado a less que sea necesario.

    Pero, en caso de serialization, intentará cargar objects asociados, y para romper esto necesitamos implementar la serialization personalizada. En su caso, debe anular correctamente el método toString de los objects anteriores, es decir, los objects no deben cargarse innecesariamente.