Spring数据存储库不以多对多关系保存数据
我正在创建一个允许我管理发票的数据模型。我遇到的问题是,当我试图通过@POST使用该服务时。一切都是正确的,即使我在数据库中进行了验证,并且没有外键发票id的记录 此处出现错误:Spring数据存储库不以多对多关系保存数据,spring,spring-boot,kotlin,jpa,spring-data-jpa,Spring,Spring Boot,Kotlin,Jpa,Spring Data Jpa,我正在创建一个允许我管理发票的数据模型。我遇到的问题是,当我试图通过@POST使用该服务时。一切都是正确的,即使我在数据库中进行了验证,并且没有外键发票id的记录 此处出现错误: 我非常感谢您的帮助,我敢于发布,因为我已经尝试了解问题所在,但我找不到它您是否检查了JSON反序列化是否正确?如果没有@JsonManagedReference/@JsonBackReference,则无法在InvoiceItem中设置双向关系 @Entity @Table(name = "invoice
我非常感谢您的帮助,我敢于发布,因为我已经尝试了解问题所在,但我找不到它您是否检查了JSON反序列化是否正确?如果没有@JsonManagedReference/@JsonBackReference,则无法在InvoiceItem中设置双向关系
@Entity
@Table(name = "invoice_item")
data class InvoiceItem(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int? = 0,
val quantitiy: Int? = 0,
@ManyToOne
@JoinColumn (name = "invoice_id")
@JsonBackReference
val invoice: Invoice? = null,
@ManyToOne
@JoinColumn
@JsonManagedReference
val item: Item? = null
)
您是否检查了JSON反序列化是否正确?如果没有@JsonManagedReference/@JsonBackReference,则无法在InvoiceItem中设置双向关系
@Entity
@Table(name = "invoice_item")
data class InvoiceItem(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int? = 0,
val quantitiy: Int? = 0,
@ManyToOne
@JoinColumn (name = "invoice_id")
@JsonBackReference
val invoice: Invoice? = null,
@ManyToOne
@JoinColumn
@JsonManagedReference
val item: Item? = null
)
对于双向关系,需要同步两端,这意味着您必须设置每个InvoiceItem的invoice字段,然后设置外键
fun addOrder(invoice: Invoice): ResponseEntity<Invoice> {
invoice.invoiceItems.forEach { it -> it.invoice= invoice}
ResponseEntity.ok(parentRepository.save(invoice))
}
fun addOrder(发票:发票):响应{
invoice.invoiceItems.forEach{it->it.invoice=invoice}
ResponseEntity.ok(parentRepository.save(发票))
}
对于双向关系,需要同步两端,这意味着您必须设置每个InvoiceItem的发票字段,然后设置外键
fun addOrder(invoice: Invoice): ResponseEntity<Invoice> {
invoice.invoiceItems.forEach { it -> it.invoice= invoice}
ResponseEntity.ok(parentRepository.save(invoice))
}
fun addOrder(发票:发票):响应{
invoice.invoiceItems.forEach{it->it.invoice=invoice}
ResponseEntity.ok(parentRepository.save(发票))
}
您可以将您的源代码与此处的示例进行比较,它具有所有类型的DB关系:我刚检查过,但找不到一个类型众多的DB关系。您能告诉我如何为post请求编写代码吗?我有所有信息,post请求,post响应,所有库存物品->我是说你的post请求的控制器/服务你可以将你的源代码与这里的示例进行比较,它有所有类型的DB关系:我刚检查过,但我找不到一个有很多这种类型的。你能告诉我你如何为你的post请求编码吗?我有所有的信息,post请求,post response,和所有库存商品->我是说您的post request的控制器/服务我刚刚发送了一个类型为Invoice的对象,答案是我在Invoice\u id关系中再次检查,它们仍然为空,并且没有关联关系我有所有信息,post request,post response,所有库存物品->我刚刚发送了一个发票类型的对象,答案是我再次检查了发票id关系,它们仍然是空的,并且没有关联关系->我有所有信息,post请求,post响应,以及所有库存物品->非常感谢,显然它已经工作了,但是,尽管我有一个疑问,有必要在foreach中真正分配每一个,hibernate会自动处理关联吗?对于外键,您必须同步两端,hibernate不会自动非常感谢您,显然它起了作用,但尽管我有一个疑问,确实有必要在foreach中分配每一个键,hibernate会自动处理关联吗?对于foreign键,您必须同步两端,hibernate不会自动处理
@Entity
@Table(name = "invoice_item")
data class InvoiceItem(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int? = 0,
val quantitiy: Int? = 0,
@ManyToOne
@JoinColumn (name = "invoice_id")
@JsonBackReference
val invoice: Invoice? = null,
@ManyToOne
@JoinColumn
@JsonManagedReference
val item: Item? = null
)
fun addOrder(invoice: Invoice): ResponseEntity<Invoice> {
invoice.invoiceItems.forEach { it -> it.invoice= invoice}
ResponseEntity.ok(parentRepository.save(invoice))
}