java—将多列Map到作为数组jpa一部分的对象的同一字段

hgtggwj0  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(346)

我正在尝试将一组对象Map到一个字段。该对象中的所有字段都Map到具有不同名称但结构相似的列。响应结构应为:

"customers": [
    {
      "firstName": "string",
      "lastName": "string",
      "products": [
        {
            "description":"string",
            "amount": "string"
        },
        {
            "description":"string",
            "amount": "string"
        }
      ]
    }
 ]

在products字段中,我有一个产品列表(描述和数量)。在db中,列的存储方式如下

product_des1,product_amt1,product_des2,product_amt2.....product_des30,product_amt30

. 我需要将这两个字段Map到产品(对象)。如果可能的话,我应该如何使用jpa注解来解决这个问题?
供参考:customers.class

@Entity
public class Customers implements Serializable {

    @Column(name = "firstName")
    private String firstName;

    @Column(name = "lastName")
    private String lastName;

    @ElementCollection
    List<Products> products;

}

产品类别

@Embeddable
public class Product implements Serializable {

    @Column(?)
    private String description;

    @Column(?)
    private String amount;

}
vyswwuz2

vyswwuz21#

在products字段中,我有一个产品列表(描述和数量)。在db中,列的存储方式如下
产品名称1、产品名称1、产品名称2、产品名称2…..产品名称30、产品名称30
所以你的 Products jpa实体应该简单地如下所示:

@Embeddable
public class Products implements Serializable {

    @Column(name = "product_des1")
    private String description1;

    @Column(name = "product_amt1")
    private String amount1;

    @Column(name = "product_des2")
    private String description2;

    @Column(name = "product_amt2")
    private String amount2;

   // ... repeat
}

如果您不想在db和jpa实体之间进行额外的Map(我不建议这样做-我尽量保持jpa实体作为db行和Map的精确表示,如果需要的话,在java中,而不是在不同的技术之间)。

相关问题