Kotlin раскрыл бесконечную рекурсию Джексона «Многие ко многим» (StackOverflowError)

#kotlin #kotlin-exposed

#kotlin #kotlin-раскрыл

Вопрос:

Я сделал ссылку «многие ко многим» в ExposedBD (kotlin) следующим образом в вики:https://github.com/JetBrains/Exposed/wiki/DAO#many-to-many-reference

Однако возникает проблема бесконечной рекурсии (Jackson), когда я пытаюсь вернуть список объектов в моем API (Javalin). Итак, я хотел бы знать, как поместить аннотацию @jsonIgnore или есть ли другие альтернативные решения в этом случае. Вот отображение:

 // many-to-many Actor--StarWarsFilms

// Actor Entity
object Actors: IntIdTable() {
    val firstname = varchar("firstname", 50)
    val lastname = varchar("lastname", 50)
}

class Actor(id: EntityID<Int>): IntEntity(id) {
    companion object : IntEntityClass<Actor>(Actors)

    var firstname by Actors.firstname
    var lastname by Actors.lastname
}

// StarWarFilm Entity
object StarWarsFilms : IntIdTable() {
  val sequelId = integer("sequel_id").uniqueIndex()
  val name = varchar("name", 50)
  val director = varchar("director", 50)
}

class StarWarsFilm(id: EntityID<Int>) : IntEntity(id) {
 companion object : IntEntityClass<StarWarsFilm>(StarWarsFilms)

 var sequelId by StarWarsFilms.sequelId 
 var name     by StarWarsFilms.name
 var director by StarWarsFilms.director
 var actors by Actor via StarWarsFilmActors
}

// Intermediate table
object StarWarsFilmActors : Table() {
    val starWarsFilm = reference("starWarsFilm", StarWarsFilms).primaryKey(0)
    val actor = reference("actor", Actors).primaryKey(1)
}
  

Комментарии:

1. Что именно вы хотите прокомментировать? В kotlin есть use-site синтаксис для аннотаций: kotlinlang.org/docs/reference /…

2. Спасибо за ответ. Итак, я хочу использовать одну из стратегий, найденных в Java, для решения проблемы бесконечной рекурсии. Я хочу поместить аннотацию @jsonignore в атрибут, который отображается как FK. В этом случае атрибутом является «актеры» в классе StarWarsFilm. Я проверю сайт, однако, если есть другие способы решить эту проблему, это будет здорово.

3. Привет @jukabarros ты нашел решение?