0
這些是我通過JPA插入到PostgreSQL時需要完成的事情。Spring MVC JPA原生插入返回生成的列
1)插入到一個表具有以下加入到所述插入件的端部「ON CONFLICT什麼都不做」(或一些註釋如果存在)
2)具有將生成的ID列中返回
目前我使用下面的方法,但它不返回生成列...
@Transactional
@Modifying
@Query(nativeQuery = true, value = "INSERT INTO table_name (value1) values(?1) ON CONFLICT DO NOTHING")
int insertWithoutConflict(Long value1);
的解決方案,我有沒有涉及JPA的工作原理是以下....
try(Connection conn = DatabaseUtils.getConnection()) {
Statement statement = conn.createStatement();
statement.execute(query, Statement.RETURN_GENERATED_KEYS);
ResultSet resultSet = statement.getGeneratedKeys();
if (resultSet.next())
return resultSet.getLong(1);
}
唯一的問題是,我然後是繞過我們當前的過程,然後不得不開始實施連接池,我不想進入。我想知道這個解決方案在JPA或Hibernate中是否可行。
根據@Kayaman
回答@Transactional
@Query(nativeQuery = true, value = "INSERT INTO My_Table(value_1, value_2) values(?1, ?2) RETURNING any_column")
Long insertWithoutConflict(String value1, Long value2);
也可以返回模型對象,我相信
@Transactional
@Query(nativeQuery = true, value = "INSERT INTO My_Table(value_1, value_2) values(?1, ?2) RETURNING column_1, columnName_2, columnName_3, columnName_4")
YourModelObject insertWithoutConflict(String value1, Long value2);
很好的回答,讓我得到了我需要的最終答案。你可以修改你的答案,並說明我需要刪除修改,然後我可以返回你說的整數值?修改使得我沒有得到結果。我刪除了它,並能夠獲得Long或Integer,甚至可以使用我正在使用的Model。我只需在返回的「RETURNING」參數中返回該模型中的所有值。 –
一旦答案更新,我會接受它!並希望它會幫助別人:) –
啊,是的,修改註釋將無法正常工作。 – Kayaman