[英]How to set JDBC mappings in spring boot JPA project?
我有一個 postgres 表 t1,它具有像 uuid 和帶區域的時間戳等列類型,它們導致
org.springframework.orm.jpa.JpaSystemException: No Dialect mapping for JDBC type: 1111; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
如果我嘗試獲取類型為 int 或 varchar 的 d 列,我的代碼可以正常工作,但是當我嘗試包含數據類型為 uuid 或日期類型的列時,它會因上述異常而失敗。
所以我有一個存儲庫接口類,它擴展了我的 CustomRepository 接口,該接口再次由另一個類實現,以實現我的自定義查詢,如下所示:
@Repository
interface Repo extends JpaRepository<Entity, UUID>, CustomRepo {
// some repo methods
}
interface CustomRepo {
List queryBy(Type1 par1, Type2 par2);
}
@Service
class CustomRepoImpl implements CustomRepo {
@PersistenceContext
private EntityManager entityManager;
public List queryBy(Type1 par1, Type2 par2) {
query_string = "SOME QUERY STRING WITH JOINS";
Query query = entityManager.createNativeQuery(query_string);
List<Object[]> resultList = (List<Object[]>) query.getResultList(); // giving No Dialect mapping for JDBC type: 1111
return resultList;
}
}
因此,當我的 query_string 選擇 int 或 varchar 類型的列時,我沒有遇到任何問題,但是當我嘗試選擇 tyoe uuid 的列時,我遇到了上述異常,可能是因為它不能為它們找到相應的 java 映射。
我如何避免這種情況? 無論如何,我可以為查詢顯式添加映射以獲取這些列類型嗎?
所以我收到了這些錯誤,因為我選擇的一些列在 postgres 中是 uuid 類型。 我想它們無法映射到適當的數據類型,例如 varchar 如何映射到字符串。 所以我更改了我的 sql 查詢以將列轉換為 varchar。 就像我在表 t1 中的列 c1 是 uuid 類型一樣,然后我在我的 sql 查詢中這樣做:
SELECT CAST(t1.c1 AS VARCHAR) .....REST_OF_THE_QUERY
因此,這將導致我的列值作為 varchar 返回,然后將其視為字符串。
不確定是否有其他選擇,但這是我能想到的最好的方法。 如果有人知道任何更好的方法,他們可以在這里分享。
根據錯誤消息,uuid 列類型無法通過休眠映射到數據庫類型。 它可能是java.util.UUID
類型。
因此,只需為您的 UUID 類型應用注釋@Type(type="uuid-char")
。
您也可以在此處檢查 Hibernate 中的字段所需的類型,並可以相應地使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.