Tag: uuid

使用PostgreSQL和SQL Server Hibernate UUID

我有一个应用程序,我想在PostgreSQL和SQL Server上运行。 我想使用java.util.UUID作为ID。 我已经在SQL Server中定义了我的列 id UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE 我在PostgreSQL中定义了我的列 id UUID NOT NULL 列在我的JPA实体中定义为 @Id @Column(name = “id”) public UUID getId() { return id; } 这适用于PostgreSQL,因为它将UUID传递给PostgreSQL JDBC驱动程序。 这种方式适用于SQL Server,因为Hibernate在将UUID发送到SQL Server之前将其转换为二进制forms。 不幸的是,二进制格式略有不同 ,导致GUID的字符串表示(例如,当使用SSMS查看它们时)不同,这至少令人困惑。 通过将列的类型更改为uuid-char,可以在SQL Server中解决此问题 @Id @Type(type = “uuid-char”) @Column(name = “id”) public UUID getId() { return id; } 然而它在PostgreSQL中不再起作用,因为在Postgres中没有从varchar到uuid的隐式映射。 有些人建议改变发电机以产生guid。 这在Postgres中不起作用,因为在PostgreSQL94Dialect中不支持它。 为这两个数据库创建这个词最优雅的解决方案是什么? […]

使用JPA在PostgreSQL中保留UUID

我试图在PostgreSQL中持久化一个使用UUID作为主键的实体。 我已经尝试将其作为简单的UUID持久化: @Id @Column(name = “customer_id”) private UUID id; 有了上面的内容,我收到了这个错误: ERROR: column “customer_id” is of type uuid but expression is of type bytea Hint: You will need to rewrite or cast the expression. Position: 137 我也尝试将UUID作为byte []保持无效: @Transient private UUID id; @Id @Column(name = “customer_id”) @Access(AccessType.PROPERTY) @Lob protected byte[] getRowId() { return id.toString().getBytes(); } protected […]

如何将.NET Guid读入Java UUID

我需要将在.NET中生成的Guid传递给Java应用程序。 我使用Guid.ToByteArray()将其作为byte[]存储在磁盘上,然后将其读入Java并将其转换为UUID。 为此,我复制了UUID的(私有)构造函数的实现,该构造函数采用byte[] : private UUID(byte[] data) { long msb = 0; long lsb = 0; assert data.length == 16; for (int i=0; i<8; i++) msb = (msb << 8) | (data[i] & 0xff); for (int i=8; i<16; i++) lsb = (lsb << 8) | (data[i] & 0xff); this.mostSigBits = msb; this.leastSigBits = lsb; } […]

在Java中生成全局唯一标识符

简介:我正在开发一个持久的Java Web应用程序,我需要确保我持有的所有资源都具有全局唯一标识符以防止重复。 精美印刷品: 我没有使用RDBMS,所以我没有任何花哨的序列生成器(例如Oracle提供的那个) 我希望它是快速的,最好是全部在内存中 – 我宁愿不必打开一个文件并增加一些值 它需要是线程安全的(我预计一次只需要一个JVM生成ID) 需要在JVM的实例化之间保持一致。 如果服务器关闭并启动,ID生成器不应该重新生成它在先前实例化中生成的相同ID(或者至少机会必须非常,非常小 – 我预计会有数百万个预先存储的资源) 我已经看到了EJB唯一ID模式文章中的示例。 它们不适用于我(我宁愿不仅仅依赖于System.currentTimeMillis(),因为我们将每毫秒保持多个资源)。 我看过这个问题中提出的答案。 我对它们的关注是,随着时间的推移,我将获得重复ID的可能性是多少? 我对使用java.util.UUID用于UUID的建议很感兴趣,但同样,重复的可能性必须极小。 我正在使用JDK6