首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Java UUID存储在二进制数据库列中,Hibernate/JPA与原始JDBC相比

将Java UUID存储在二进制数据库列中,Hibernate/JPA与原始JDBC相比
EN

Stack Overflow用户
提问于 2016-07-01 00:41:29
回答 1查看 3.6K关注 0票数 1

使用Hibernate/JPA的UUID

长期以来,我一直习惯于将UUID值存储在二进制数据库列中(例如,BYTEA表示PostgreSQL,BINARY(16)表示MySQL)。当使用Hibernate和JPA时,我可以这样注释我的实体字段.

代码语言:javascript
运行
复制
@Id
@Column(name = "id", columnDefinition = "BINARY(16)")
private UUID id;

..。它只是起作用了。

UUID与JDBC

在我需要编写使用JDBC的情况下,我编写了如下UUID值.

代码语言:javascript
运行
复制
PreparedStatement ps = new PreparedStatement("INSERT INTO foo (id) VALUES (?)");
ps.setObject(1, uuid, Types.BINARY)

..。像这样读UUID值..。

代码语言:javascript
运行
复制
while (rs.net() {
    UUID id = UUID.nameUUIDFromBytes(rs.getBytes("id"));
}

混合火柴?

最近,我获取了Hibernate/JPA应用程序使用的MySQL数据库,并使用mysqldump工具导出和导入了它,并尝试使用一些原始的JDBC代码来使用这些数据。Hibernate/JPA代码和读、写UUID,以及原始JDBC代码可以读写UUID。

  1. 使用JDBC读取最初由Hibernate/JPA编写的UUID,以及
  2. 让我的JDBC代码在其他地方写同样的UUID
  3. 由JDBC代码存储在MySQL中的值会使与原始值不匹配

以前有没有人见过这个,或者说过什么理论?我不完全理解Hibernate/JPA是如何在封面下序列化UUID值的,所以我不确定我可能需要用我的原始JDBC代码做什么来产生相同的结果。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-01 01:05:08

答案可以在用于二进制和Var二进制的Mysql文档中找到。

代码语言:javascript
运行
复制
The BINARY and VARBINARY types are similar to CHAR and VARCHAR, except that they contain binary strings rather than nonbinary strings. That is, they contain byte strings rather than character strings. This means that they have no character set, and sorting and comparison are based on the numeric values of the bytes in the values.

二进制在mysql中存储二进制字符串,这意味着字节字符串而不是字符。

如果您想按原样使用UUID,最好在mysql和postgresql中都使用VARCHAR类型。

申报

代码语言:javascript
运行
复制
@Id
@Column(name = "id")
private String id;

写到db

代码语言:javascript
运行
复制
PreparedStatement ps = new PreparedStatement("INSERT INTO foo (id) VALUES (?)");
ps.setObject(1, uuid.toString());

从分局读。

代码语言:javascript
运行
复制
while (rs.net() {
    UUID id = UUID.fromString(rs.getString("id"));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38135359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档