spring-data-jpa 休眠转换字符为二进制

e0uiprwp  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(119)

我的JPA实体有一个UUID属性,它在mysql中存储为char(36)。当我查询数据时,我收到的是66323735-3039-6262-2d31-3764392d3466而不是f27509bb-17d9-4f37-b336-8603f2d34394。当我启用Hibernate日志时,我可以看到

org.hibernate.type.descriptor.sql.BasicExtractor - extracted value ([col_1_0_] : [BINARY]) - [66323735-3039-6262-2d31-3764392d3466]

提取的值是[BINARY],而不是像其他属性一样的[VARCHAR]
有什么线索能解释为什么会这样吗?
还有,
1.我试过在mysql上运行hib生成的查询,结果是正确的。
1.其他列值(包括UUID)将正确返回。
1.我使用基于实体投影的接口来检索有限的数据,而不是整个实体。
编辑:我刚刚添加了trim(colName),现在它返回了正确的UUID值。但仍然不确定手头的问题。

k2arahey

k2arahey1#

对hib6执行此操作。它将生成字符类型(对于mysql char(36))。

@org.hibernate.annotations.JdbcTypeCode(SqlTypes.CHAR)
protected UUID id;

相关问题