У меня есть база данных 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();
}
}