[英]ERROR: column "id" is of type uuid but expression is of type bytea
[英]How to fetch table with bytea type id column?
我有一個 PostgreSQL 數據庫,我想用 Hibernate 獲取一些數據。 我有一個像這樣的實體;
@Entity
public class User {
@Id
@Type(type = "uuid-binary")
@GenericGenerator(name = "user-generator", strategy = "uuid2")
@GeneratedValue(generator = "user-generator")
@Column(name = "user_id", length = 16, unique = true, nullable = false)
private UUID userId;
....
}
當我嘗試使用 Hibernate 獲取所有用戶值時,沒有問題。 Hibernate 映射 UUID 字段。 但是當我嘗試使用 UUID 獲取特定用戶時,它返回空結果。 如何獲取具有 userId 值的單個用戶?
List<User> users = userDao.getAll(); //I can get all users with non-empty userId fields
userDao.getWithId(users.get(0).getUserId()) // returns null.
users.get(0).getUserId() //returns java.util.UUID instance like "33333-3333..."
編輯:
public User getWithId(UUID Id) {
EntityManager em = emFactory.createEntityManager();
try {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
Root<User> typeRoot = criteriaQuery.from(User.class);
criteriaQuery.select(typeRoot).where(criteriaBuilder.equal(typeRoot.get("userId"), Id));
final Query query = em.createQuery(criteriaQuery);
return (User) JPAHelpers.getSingleResultOrNull(query);
} catch (Exception e) {
throw e;
} finally {
em.close();
}
}
雖然,您沒有分享getWithId()
方法的實現。 我假設您正在使用 JPA Repository 方法。 嘗試使用以下方法注釋UUID
字段:
@Type(type="org.hibernate.type.UUIDBinaryType")
或者
@Type(type="org.hibernate.type.UUIDCharType") // if column is VARCHAR
或者嘗試在@Column
注釋中定義columnDefinition
參數:
@Column(name = "user_id", columnDefinition = "BINARY(16)", unique = true, nullable = false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.