我正在进行一个项目,该项目使用带有Panache和PostgreSQL的Quarkus,并且我正在try 将JSON数据作为JSONB存储在数据库中.然而,当我将JSON数据插入到数据库中时,它被转义,我希望不转义地存储它,以便能够从邮局查询JSON.
下面是我插入JSON数据的代码:
JsonObject jsonObject = Json.createObjectBuilder()
.add("name", "John")
.add("age", 30)
.add("city", "New York")
.build();
String jsonString = jsonObject.toString(); // Convert JsonObject to JSON String
return update("update OfferEntity o set o.items = ?1", jsonString).onItem().transform(ignored -> offer);
但是,在PostgreSQL数据库中,插入的字段如下所示:
"{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"
我希望将其存储为:
{"name":"John","age":30,"city":"New York"}
这是我的OfferEntity实体类:
@Entity
@Table(name = "offering")
@Cacheable
@WithSession
public class OfferEntity extends PanacheEntityBase {
@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "items", columnDefinition = "jsonb", insertable = false, updatable = false)
private String items;
public String getItems() {
return items;
}
public void setItems(String items) {
this.items = items;
}
}
我用的是最新的华丽依附.如何修改我的代码或配置以在PostgreSQL中将JSON数据存储为JSONB而不进行转义?请注意,框架可以从数据库中读取值,即使它们是转义存储的,但我也想用查询来搜索它们,因为JSON被所有这些转义 destruct 了
UPDATE个
我还try 了以下情况,但结果与我在数据库中获得的值相同
"{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"
我先试了一下这个
public class Item implements Serializable {
private String name;
private int age;
private String city;//with getters setters
}
OfferEntity类如下所示
@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "items", columnDefinition = "jsonb", insertable = false, updatable = false)
private Item items;
public Item getItems() {
return items;
}
public void setItems(Item items) {
this.items = items;
}
我还试着把物品做成 map
@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "items", columnDefinition = "jsonb", insertable = false, updatable = false)
private Map<String, String> items;
public Map<String, String> getItems() {
return items;
}
public void setItems(Map<String, String> items) {
this.items = items;
}
这是Hibernate 漏洞吗?我使用的Hibernate版本是6.2.7最终版本