Ive searched and searched for an answer to this but still cannot solve..
I know it will work if I pass the enum value to the hql query as a param but how can I hardcode the enum in the query like the following?
(this is groovy code, so thats why theres no ;'s or double quotes )
I assume the enum does not have to be backed by a table or exist in persistence.xml. im using @Enumerated in my entity - should i be using embeddable ? or something else ????
[b]@NamedQuery(name = 'CategoryItemEvent.userPassport', query = 'SELECT o FROM CategoryItemEvent o WHERE \ o.user = :user and \ o.categoryItem.category.id = 1 AND \ o.categoryItemEventType = com.xxx.ql.entity.CategoryItemEventTypeName.HATE')[/b]
enum:
public enum CategoryItemEventTypeName { REVIEW(1), STAY(2), STAYED_AND_LIKED(3), BOOK(4), CHECKIN(5), PHOTO(6), MESSAGE_PUBLIC(7), MESSAGE_PRIVATE(8), CITY_QUESTION(9), CITY_QUESTION_COMMENT(10), CITY_COMMENT(11), CITY_ANSWER(12), CITY_DEAL(13), HOTEL_QUESTION(14), HOTEL_ANSWER(15), HOTEL_QUESTION_COMMENT(16), HOTEL_COMMENT(17), HOTEL_DEAL(18), GROUP_DEAL(19), LIKE(20), LOVE(21), DISLIKE(22), HATE(23)
final Long id
private CategoryItemEventTypeName(Long id) { this.id = id }
}
Entity:
public class CategoryItemEvent implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id
@NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name='itemId') CategoryItem categoryItem
@NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name='itemId', insertable = false, updatable=false) CategoryHotel categoryHotel
[b] @NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "typeId") @Enumerated CategoryItemEventType categoryItemEventType[/b]
@NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "userId") User user
@NotBlank String text
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY) @JoinTable( name = "ql_category_item_event2context", joinColumns = [@JoinColumn(name = "eventId")], inverseJoinColumns = [@JoinColumn(name = "contextId")] ) List<CategoryItemEventContext> contexts
@NotNull Date createDate
Integer sentiment
@OneToOne(cascade = CascadeType.ALL, mappedBy = "event", fetch = FetchType.LAZY) ImportTaReviewsIds importTaReviewsIds; }
|