【发布时间】:2019-07-02 15:47:05
【问题描述】:
我有一个 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 映射。
如何避免这种情况?无论如何我可以为查询显式添加映射以获取这些列类型吗?
【问题讨论】:
标签: java spring-boot spring-data-jpa