簡體   English   中英

JPA 2.1將字符串保留為枚舉postgres

[英]JPA 2.1 persist string as enum postgres

我正在使用JPA 2.1在數據庫上執行CRUD操作。 我使用JPA工具->從表格生成實體選項從預先存在的數據庫生成了實體 這創建了一個名為Item的Java實體。

數據庫表Item具有一列enum item_status類型的列,該列在Java實體中創建為String類型 現在,我嘗試使用以下方法將一列插入表Item中,並收到此錯誤

錯誤:“狀態”列的類型為item_status,但表達式的類型為字符變化。 提示:您將需要重寫或強制轉換表達式。

Item_Test_CRUD.java

//在這里,我試圖測試是否可以插入數據庫

@Test
void test_insert_into_db() {
    DBConnection conx = new DBConnection(); // here I get the message login successful, so I assume the connection to the DB is okay

    Item it = new Item();

    it.setStatus("Rework");
    it.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
    it.setMetadata("{}");

    conx.insert(it);
}

//我正在使用EntityManager連接到DB DBConnection.java

public void insert(Object obj) {
    this.em.getTransaction().begin();
    this.em.persist(obj);
    this.em.getTransaction().commit();
}

//由JPA工具Item.java生成的實體

@Entity
@Table(name="\"Items\"")
@NamedQuery(name="Item.findAll", query="SELECT i FROM Item i")
public class Item implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Convert(converter=UUIDConverter.class)
    private String id;

    .
    .

    @Column(name="status")
    private String status;
    .
    .
}

知道我在這里犯什么錯誤嗎?

通過向連接字符串添加stringtype = unspecified解決了該問題。 我不必將Java實體列的類型更改為枚舉。 只是將其保留為String類型。 有關更多信息:stackoverflow.com/a/43125099/270371 https://jdbc.postgresql.org/documentation/94/connect.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM