簡體   English   中英

如何獲取帶有 bytea 類型 id 列的表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM