В моей таблице элементов, у меня есть столбец перечислимого, чтобы описать состояние этого элемента:Hibernate IllegalArgumenetException на перечисления колонка
@Enumerated(EnumType.STRING)
@Column(name="status")
private ItemStatus status;
Тогда, когда я пункт добавлен в корзину, я хочу перечислить все пункт в корзине с этим запросом:
select i.* from item as i inner joint cart as c on i.item_id = c.item_id
where c.owner_id=:owner_id group by i.item_id
Результат по вышеуказанному возврату, как я ожидал. Тем не менее, я хотел бы также получить более подробную информацию о владельце этого элемента, так что я изменить запрос:
select i.*, u.* from item as i inner join cart as c on i.item_id = c.item_id
inner join customer as u on i.owner_id = u.customer_id
where c.owner_id = :owner_id group by i.item_id, u.customer_id
SQLQuery query = session.createSQLQuery(queryname);
List<Object[]> result = query.addEntity(Item.class)
.addEntity(Customer.class)
.setParameter("owner_id", owner_id)
.list();
С вторым запросом я получил неизвестное значение имени для перечисления класса на колонке статуса. Интересно, почему в первом запросе есть исключение, кроме второго. И каков правильный способ получить столбец перечисления в спящем режиме?
Это мое перечисление класс
public enum ItemStatus {
ACTIVE, UNAVAILABLE;
}
Я только хочу получить информацию о товаре и информацию о владельце этого предмета, так зачем мне добавлять объект Cart? Я попытался запустить второй запрос на pgAdmin, и результат будет таким, каким я ожидал. Поэтому я думаю, что я применил hibernate SQLquery некорректно –
да, вы правы. можете ли вы поделиться своим классом enum? –
Я только что обновил свой класс enum –