Бесконечный цикл со многими ко многим в kotlin с subtable - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблема с отношением «многие ко многим».

Здесь я вставлю код

User.kt

@Entity
@Getter
@Setter
@Builder
@Inheritance(strategy = InheritanceType.JOINED)
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "USER", schema = "public")
 data class User(
    @JsonView(Views.Base::class)
    var username: String,
    @JsonView(Views.UserExtended::class)
    @OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true)
    @JsonManagedReference
    var projects: List<UserProject>? = mutableListOf()

UserProject.kt

@Entity
@Getter
@Setter
@Builder
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "USER_PROJECT", schema = "public")
data class UserProject(
    @JsonView(Views.ProjectExtended::class)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    val user: User?,
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "project_id")
    val project: Project?,
    @JsonView(Views.ProjectExtended::class)
    val projectRole: String
) : BaseEntity() {}

Project.kt

@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "PROJECT", schema = "public")
data class Project (
    @JsonView(Views.Base::class)
    val name: String?,
    @OneToMany(mappedBy = "project", cascade = [CascadeType.ALL], orphanRemoval = true)
    @JsonView(Views.ProjectExtended::class)
    var users: List<UserProject>?
) : BaseEntity() {}

И я иду через бесконечный цикл.Что я сделал, так это просто сделал Views, чтобы преодолеть проблему.Но я также использую QueryDSL на @RepositoryRestResource, который дает мне автоматический предикат для URL. И проблема в том, что я не могу просто добавить @ Jsonview в интерфейс RepositoryRestResource.

Я пытался сделать Projection, но он дал мне результат цикла Infinity, потому что @ JsonView не работает на Projection и интерфейсе

Есть ли у кого-то предложение, какя мог преодолеть эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...