将多列映射到作为数组JPA一部分的对象的同一字段



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

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

在产品领域,我有一个产品列表(描述和数量(。在DB中,列像一样存储

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

我需要将这两个字段映射到产品(对象(。如果可能的话,我应该如何使用JPA注释来解决问题?

供参考:客户.class

@Entity
public class Customers implements Serializable {
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
@ElementCollection
List<Products> products;
}

产品.class

@Embeddable
public class Product implements Serializable {
@Column(?)
private String description;
@Column(?)
private String amount;
}

在products字段中,我有一个产品列表(描述和数量(。在DB中,列像一样存储

product_des1、product_amt1、product_des2、product_amd2……product_des30、product_amt 30

所以你的ProductsJPA实体应该看起来像这样:

@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实体之间进行额外的映射(我不建议这样做——我尽量将JPA实体保留为DB行的精确表示,并在必要时在Java中进行映射,而不是在不同技术之间进行映射(。

相关内容

最新更新