Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring数据存储库不以多对多关系保存数据_Spring_Spring Boot_Kotlin_Jpa_Spring Data Jpa - Fatal编程技术网

Spring数据存储库不以多对多关系保存数据

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

我正在创建一个允许我管理发票的数据模型。我遇到的问题是,当我试图通过@POST使用该服务时。一切都是正确的,即使我在数据库中进行了验证,并且没有外键发票id的记录

此处出现错误:


我非常感谢您的帮助,我敢于发布,因为我已经尝试了解问题所在,但我找不到它

您是否检查了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))
}