我正在尝试使用Jersey、Gson和JPA构建一个REST应用程序,并希望将JSON对象放入Postgres的JSON或JSONB数据库字段中。
我尝试做类似这样的事情:如何在JPA中使用Postgres JSONB数据类型?,但我的表看到的是'VARCHAR'类型而不是'JSONB'。
我的实体:
@Entity
@Table(name = "votes")
public class Votes {
@Id
@GeneratedValue
private int id;
private int idSocialChoice;
@Convert(converter=JsonConverter.class)
private JsonObject vote;
public Votes() {
}
public JsonObject getVote() {
return vote;
}
public void setVote(JsonObject vote) {
this.vote = vote;
}
public int getIdSocialChoice() {
return idSocialChoice;
}
public void setIdSocialChoice(int idSocialChoice) {
this.idSocialChoice = idSocialChoice;
}
如何插入实体:
Votes votes0 = new Votes();
votes0.setIdSocialChoice(3);
JsonObject object = Json.createObjectBuilder().build();
votes0.setVote(object);
List<Votes> listvotes = new ArrayList<Votes>();
listvotes.add(votes0);
ModelEntities.insertVotes(listvotes);
方法 insertVotes:
public static void insertVotes(List<Votes> animalList) {
CrudServiceBean crudServiceBean = new CrudServiceBean(CrudServiceBean.PU_DB);
crudServiceBean.newTransaction();
for(Votes votes : animalList)
crudServiceBean.create(votes);
crudServiceBean.commit();
crudServiceBean.closeTransaction();
}
crudServiceBean.create 的 create 方法:
public <T> T create(T t) {
this.em.persist(t);
this.em.flush();
this.em.refresh(t);
return t;
}
我的JPA提供者创建了这样的模式(createDDL_ddlGeneration.sql):
CREATE TABLE votes (ID INTEGER NOT NULL, IDSOCIALCHOICE INTEGER, VOTE VARCHAR(255), PRIMARY KEY (ID))
我也会避免使用Hibernate。
谢谢。