У меня есть Enum внутри класса, который хранит значение своей сущности в базе данных, и я хочу обратиться к этому столбцу для выполнения запроса.Вот сущности:
public class PostBox{
private Message message;
@ManyToOne
@JoinColumn(name = "MESSAGE_ID")
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
}
public class Message{
private Answer answer;
@Column(name = "ANSWER")
@Enumerated(EnumType.STRING)
public Answer getAnswer() {
return answer;
}
@AllArgsConstructor
public static enum Answer{
MAYBE_YES,
MAYBE_NO,
MAYBE_I_DONT_KNOW
@Getter
private final String label;
}
}
Что я хочу достичь на простом английском языке: Select * from POSTBOX where MESSAGE IN (SELECT * from MESSAGE where ANSWER = MAYBE_NO)
Вот то, с чем я пришел
@Override
public final Specification<PostBox> byFilter(final PostBoxFilter filter) {
return new Specification<PostBox>() {
@Override
public Predicate toPredicate(Root<PostBox> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.equal(root.join(PostBox_.message).get(Message_.answer), filter.getAnswer());
}
};
}
Но это дает error : no suitable method found for get(SingularAttribute<Message,Answer>)
Как получить доступ к этой переменной?