簡體   English   中英

如何在 Spring Boot JPA 項目中設置 JDBC 映射?

[英]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.

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