/ / JPAでPostgresデータベースを介してJSONBを配置する方法-java、json、postgresql、jpa

JSONBをJPAでPostgresデータベースに挿入する方法 - java、json、postgresql、jpa

Jersey、Gson、JPAを使用してRESTアプリケーションを構築しようとしていますが、JSONオブジェクトを JSONまたはJSONB Postgresへのデータベースフィールド。

私はこのようなことをやろうとした: JPAでPostgres JSONBデータ型を使用する方法は? しかし、私のテーブルには「JSONB」ではなく「VARCHAR」タイプが表示されます。

私のエンティティ:

@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のメソッド作成:

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の使用も避けます。

ありがとうございました。

回答:

回答№1の場合は3

私はついに問題を発見しました。私の属性に関する次の行を忘れました:

@Column (nullable = true, columnDefinition = "jsonb")