Как получить таблицу со столбцом id типа bytea? - PullRequest
3 голосов
/ 06 января 2020

У меня есть база данных 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. Но когда я пытаюсь получить указанного пользователя c с 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();
    }
}

1 Ответ

0 голосов
/ 06 января 2020

Хотя вы не разделяли реализацию метода getWithId(). Я предполагаю, что вы используете методы репозитория JPA. Попробуйте аннотировать поле UUID:

@Type(type="org.hibernate.type.UUIDBinaryType")

или

@Type(type="org.hibernate.type.UUIDCharType") // if column is VARCHAR

Или попробуйте определить параметр columnDefinition в аннотации @Column:

@Column(name = "user_id", columnDefinition = "BINARY(16)", unique = true, nullable = false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...