SQL Отношения OneToMany - PullRequest
       1

SQL Отношения OneToMany

0 голосов
/ 29 мая 2020

Я новичок в отношениях SQL, я использую spring, и я хочу создать отношения OneToMany между клиентом и билетом, например, у клиента может быть несколько билетов, но у билета не может быть несколько клиентов, вот что получил,

@Entity
@Table(name = "tickets")
data class Ticket(
    @Id
    val id:Long,
    val ticketId:String,
    val price:Int,
    val openDate:LocalDateTime,
    val closeDate:LocalDateTime,
    @ManyToOne
    val customer:Customer
)


@Entity
@Table(name = "customers")
data class Customer(
    @Id
    val id:Long,
    val email:String,
    val discordUserId:String,
    val amountSpent:Int,
    @OneToMany
    @JoinColumn(name = "ticket_id", table = "tickets")
    val tickets:Set<Ticket>
)

Однако при запуске появляется сообщение об ошибке

Вызвано: org.hibernate.cfg.NotYetImplementedException: Коллекции, имеющие FK во вторичной таблице

Просто интересно, как я могу это решить,

1 Ответ

0 голосов
/ 29 мая 2020

Вы должны реализовать двунаправленные отношения между вашими классами, например this :

@Entity
@Table(name = "customers")
data class Customer(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id:Long,
    var email:String,
    var discordUserId:String,
    var amountSpent:Int,
    @OneToMany(mappedBy = "customer", cascade = [CascadeType.ALL], orphanRemoval = true, fetch = FetchType.EAGER)
    var tickets:Set<Ticket> = setOf()
)

@Entity
@Table(name = "tickets")
data class Ticket(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id:Long,
    var ticketId:String,
    var price:Int,
    var openDate:LocalDateTime,
    var closeDate:LocalDateTime,
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="customer_id", nullable=false)
    var customer: Customer? = null
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...