постоянное значение enum в бумага HQL
у меня есть работающий запрос, который мне нужно изменить путем фильтрации с постоянным значением перечисления.
теперь это выглядит так:
public static final String venueQuery =
"select distinct v from package.Venue v "
+ "<some joins here> "
+ "WHERE v.venueType = package.enums.VenueType.VOUCHER_PROVIDER ";
изменение данных таким образом причины
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token
определение столбца выглядит следующим образом:
@Enumerated(EnumType.STRING)
@Column(name = "venue_type")
private VenueType venueType;
определение перечисления выглядит так:
public enum VenueType {
RESTAURANT, BAR, CAFE, FUN_CLUB, VOUCHER_PROVIDER
}
Я уверен, что другие части запроса работают нормально, потому что после его удаления никаких исключений не возникает.
есть ли трюки для настройки постоянное значение перечисления в запросе HQL?
2 ответов
предпочтительным способом было бы добавить параметры в запрос и передать экземпляр перечисления в качестве значения параметра, но если вы не можете (или не можете) сделать его параметризованным запросом, вы все равно можете сделать это с String
конкатенации такой:
public static final String venueQuery =
"select distinct v from package.Venue v "
+ "<some joins here> "
+ "WHERE v.venueType = '" + VenueType.VOUCHER_PROVIDER.name() +"'";
если вы хотите, чтобы это постоянный запрос времени компиляции String
:
public static final String venueQuery =
"select distinct v from package.Venue v "
+ "<some joins here> "
+ "WHERE v.venueType = 'VOUCHER_PROVIDER'";