嗨,我正在尝试将JSON映射到SprinBoot中的databse表。 这是我的@Entity:
@Data
@AllArgsConstructor
@Entity
public class User {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private Long id;
private String name;
private String tagline;
private String first_brewed;
@Column(length=700)
private String description;
private String image_url;
private Long ibu;
private String[] food_pairing;
public User() {}
}
JSON看起来:
[
{
"id": 1,
"name": "Buzz",
"tagline": "A Real Bitter Experience.",
"first_brewed": "09/2007",
"description": "A light, crisp and bitter IPA brewed with English and American hops. A small batch brewed only once.",
"image_url": "https://images.punkapi.com/v2/keg.png",
"ibu": 60,
"food_pairing": [
"Spicy chicken tikka masala",
"Grilled chicken quesadilla",
"Caramel toffee cake"
]
}
]
我想将其保存到H2数据库中。
数据库中只有一列包含字母和数字的字符串
我的问题是:如何更改
私有字符串[] food_pairing;
将所有food_pairings显示为数据库中的单独列?
((如果我在JSON中有一个对象,我可以在@Entity中做到这一点:
@Embedded private Address address;
然后在其他班级:
@Embeddable public class Address {
private String street;
private String suite;
}
我在数据库中有一个自动创建的列。我想做同样的事情,但不要只用JSON中的字符串数组处理JSON中的对象。
答案 0 :(得分:0)
如果我了解您的要求,则希望将此数组private String[] foodPairing;
保留在一列中。如果是这样,您可以按照以下步骤进行操作:
public class User {
....
@Transient
private String[] foodPairing;
@Column(name="food_pairing")
private String food_Pairing;
}
在保留实体之前,您可以执行以下操作:
user.setFood_Paring(user.getFoodPairing().toString());
然后坚持。
编辑:
如果要将每个字符串都放在一列中,可以在实体中添加3个字段,如下所示:
public class User {
....
@Transient
private String[] foodPairing;
@JsonIgnore
@Column(name="food_pairing1")
private String foodPairing1;
@JsonIgnore
@Column(name="food_pairing2")
private String foodPairing2;
@JsonIgnore
@Column(name="food_pairing3")
private String foodPairing3;
}
当您坚持时:
user.setFoodParing1(user.getFoodPairing()[0]); //etc...