hibernate - 如何查询以二进制形式存储在数据库中的 UUID(JPA/Hibernate/MySQL)

标签 hibernate jpa binary uuid

我有一个基于 Java/JPA/Hibernate/MySQL 的应用程序。我想使用 UUID 进行对象标识,但我想确保数据库性能不会受到影响。

我发现了这篇很棒的博客文章 JPA and UUID Primary Keys这让我取得了一些进展。请注意如何通过以二进制形式存储 UUID(相对于字符串表示形式)来优化 UUID 的存储。

它解决了部分问题,因为现在我们可以有效地将对象插入数据库。

但是,现在当我想使用 EntityManager.createQuery 从数据库查询时遇到问题。是否可以/需要查询二进制数据?或者,我应该将字符串 UUID 与二进制版本一起存储以方便查询吗?

最佳答案

使用 Hibernate 4.1.2 和 MySQL-Connector-J 5.1.18 进行测试,可以定义 UUID 字段:

@Entity
class EntityType {
    @Column( columnDefinition = "BINARY(16)", length = 16 )
    private UUID id;
}

...并使用 UUID 实例进行查询:

UUID id = ....;
EntityType result = em.createQuery( 
   “SELECT x FROM EntityType x WHERE x.id = ?1″, EntityType.class )
   .setParameter( 1, id ).getSingleResult();

关于hibernate - 如何查询以二进制形式存储在数据库中的 UUID(JPA/Hibernate/MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629127/

相关文章:

spring - org.hibernate.PersistentObjectException : detached entity passed to persist with H2 in memory database

java - QueryParameterException 即使一切似乎都被正确命名

java - 使用 Spring Data JPA 和 JPA EntityListener 进行字段级加密

java - 我应该使用哪个 EJB 3 持久提供程序?

linux - Bash 脚本打印出二进制文件的内容,一次一个字,不带 xxd

windows - DOS MZ 二进制文件可以有 VERSIONINFO 元数据吗?

java - 具有基于注释的复合主键的 Hibernate createCriteria 查询

java - Hibernate 级联与单独调用

java - Spring引导+Spring数据jpa : how do I know if adding data to table failed due to duplicate primary key?

c - 从二进制文件 c 构建一个 float