Я недавно начал рефакторировать свой проект, потому что мне пришлось добавить дополнительную колонку в некоторые из моей таблицы. Дополнительный столбец - это перечисление (ожидающее или активное).
Из -за этого изменения мне нужно сейчас, чтобы реорганизовать все мои вопросы, чтобы извлечь строку только в том случае, если статус активен. < /p>
После некоторого исследования я обнаружил, что мы можем аннотировать сущность с аннотацией @where. Он отлично работает там, где я использую его в простом столбце, но моя таблица выглядит так: < /p>
@Where(clause = 'state='ACTIVE'")
@Entity
public class Place {
@Column(name="id_place")
private String placeId;
@Column(name="name")
private String palceName;
@OneToMany(mappedBy = "place")
private Set placeTag;
...
...
}
@Where(clause = 'state='ACTIVE'")
@Entity
public class Tag {
@Column(name="id_tag")
private String tagId;
@Column(name="name")
private String tagName;
@OneToMany(mappedBy = "tag")
private Set placeTag;
...
...
}
@Where(clause = 'poi.state='ACTIVE' AND tag.state='ACTIVE")
@Entity
public class PlaceTag {
@Column(name="id")
private String id;
@ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
@JoinColumn(name = "place_id")
private Place place;
@ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
@JoinColumn(name = "tag_id")
private Tag tag;
...
...
}
< /code>
Теперь мой вопрос заключается в том, как сделать это оператор только вернуть места и теги, которые активны? < /p>
SELECT pt FROM PlaceTag pt;
< /code>
Это возможно? Или мне придется явно написать запрос? < /P>
Спасибо < /p>
Подробнее здесь: https://stackoverflow.com/questions/271 ... e-relation