gpt4 book ai didi

java - Hibernate 支持的 Postgresql UUID?

转载 作者:太空狗 更新时间:2023-10-29 23:00:48 26 4
gpt4 key购买 nike

我无法让 Hibernate 与 PostgreSQL 的 java.util.UUID 一起工作。

这是使用 javax.persistence.* 注释的映射:

private UUID itemUuid;

@Column(name="item_uuid",columnDefinition="uuid NOT NULL")
public UUID getItemUuid() {
return itemUuid;
}

public void setItemUuid(UUID itemUuid) {
this.itemUuid = itemUuid;
}

当持久化一个 transient 对象时,我得到一个 SQLGrammarException:

column "item_uuid" is of type uuid but expression is of type bytea at character 149

PostgreSQL 版本为 8.4.4
JDBC 驱动程序 - 8.4.4-702(也试过 9.0 - 同样的东西)
Hibernate版本为3.6,主要配置属性:

<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://192.168.1.1/db_test</property>

最佳答案

这可以通过在 UUID 中添加以下注释来解决:

import org.hibernate.annotations.Type;
...
@Type(type="pg-uuid")
private java.util.UUID itemUuid;

至于为什么 Hibernate 不直接将其设为默认设置,我不能告诉你......

更新:使用 createNativeQuery 方法打开具有 UUID 字段的对象似乎仍然存在问题。幸运的是,到目前为止,createQuery 方法对我来说效果很好。

关于java - Hibernate 支持的 Postgresql UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com