我希望与 SQL 建立 OneToMany
关系,以及 ManyToOne
关系。我有一个 Ticket 实体和一个 TeamMember 实体。但是,当我第一次保存 Ticket 实体时,我不会知道 TeamMember,如果我将其设置为 null,我会得到以下结果:
2020-05-29 23:49:55.754
ERROR 24020 --- [onPool-worker-2] o.h.engine.jdbc.spi.SqlExceptionHelper:
Column 'team_member_id' cannot be null
我应该做什么?
门票:
data class Ticket(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id:Long = 0,
val ticketId:String,
var price:Int? = null,
val openDate:LocalDateTime = LocalDateTime.now(),
var closeDate:LocalDateTime? = null,
var paypalId:String? = null,
var paid:Boolean = false,
var status:TicketStatus = TicketStatus.OPEN,
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "team_member_id", nullable = false)
val teamMember: TeamMember? = null,
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "customer_id", nullable = false)
val customer:Customer
)
团队成员:
@Entity
data class TeamMember(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id:Long = 0,
val discordId:String,
val joinDate:LocalDateTime,
val ordersCompleted:Int,
val amountMade:Int,
val email:String,
val pastWork:String,
@OneToMany(mappedBy = "teamMember", cascade = [CascadeType.ALL],
orphanRemoval = true, fetch = FetchType.EAGER)
val tickets:Set<Ticket> = setOf()
)
最佳答案
查看这部分代码(Ticket
):
@JoinColumn(name = "team_member_id", nullable = false)
val teamMember: TeamMember? = null
您可以使用 nullable=false
将 SQL 列设置为非 null
。
但是,您将该属性声明为 TeamMember?
并将其设置为 null
。
您可以在持久化之前将 teamMember
设置为非 null
的值,或者将 nullable
设置为 true
(取决于您的需要)。
关于java - 一对多 SQL 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62087893/