は、私は次のように設定されている休止実体関係に働いてスロー:休止@OneToManyは、テーブルに参加StackOverflowExceptionが
ユーザーが割り当てを作成することができます。ユーザーは割り当てを他のユーザーと分けて、タスクを与えることができます。
{ID:1、割り当て:[{名: 'テスト'}]、partialAssignment:[{タスク 'BLA'}]}私の目標は以下の通りであるユーザ有することである
およびこのような割り当て: {ID:1、ユーザー:{...}、assignedUsers:[{...}]、...}
割付:
@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()
)
ユーザ
@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 {
}
私はJPARepository .findOne(ID)の呼び出しを使用して割り当てクラスをフェッチ
は、私がAssignment.toString()メソッドのStackOverflowの例外を取得します。なぜ私は偽のManyToMany関係(assignedUsers)を追加するまでうまくいったので、私は理解していない。どのような考えですか?
私はオブジェクトをまだシリアル化しようとしていません。ちょうどそれをフェッチしてください。私はなぜJpaRepositoryがtoString()を呼び出しているのか理解できません。 – pokemans
これは動作します、私はちょうどなぜこれを行うのか分かりません。 – pokemans
このオブジェクトをビューに送信し、javascriptで使用すると、ビューエンジン(thymeleaf?)はオブジェクトをシリアライズします。 – sedooe