У меня есть класс Tag, который хранит ссылку на набор статусов с помощью таблицы соединений TagStatus, в настоящее время в системе нет объекта для него
package com.iit.awt.application.domain;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@Entity
@Table(name="System_Table_Tag")
public class Tag implements Serializable {
private static final long serialVersionUID = 4142565751324734722L;
@Id
@Column(name="TagId")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long tagId;
@Column(name="TagText")
private String tagText;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name = "System_Table_Tag_Status",
joinColumns = {@JoinColumn(name="TagId")},
inverseJoinColumns = {@JoinColumn(name="StatusId")})
private List<Status> statuses;
public Long getTagId() {
return tagId;
}
public void setTagId(Long tagId) {
this.tagId = tagId;
}
public String getTagText() {
return tagText;
}
public void setTagText(String tagText) {
this.tagText = tagText;
}
public void setStatuses(List<Status> statuses) {
this.statuses = statuses;
}
public List<Status> getStatuses() {
return statuses;
}
}
Я автоматически получаю данные динамически изспереди, чтобы делать это всякий раз, когда отображаются статусы, сохраняется последнее состояние, а затем показываются все статусы (с большим значением statusId, поскольку идентификатор автоматически увеличивается)
Это моя функция класса дао здесь
@Override
public List<Tag> getTagDetailsUsingTagTextWithStatusFiltering(
String profileText, Long latestStatus) {
Criteria criteria = super.getCurrentSession().createCriteria(Tag.class);
if(profileText!=null && profileText!=""){
criteria.add(Restrictions.eq("tagText", profileText));
}
if(latestStatus!=null){
criteria.createAlias("statuses", "stts");
criteria.add(Restrictions.gt("stts.statusId", latestStatus));
}
return criteria.list();
}
Несмотря на то, что все работает нормально, все статусы возвращаются.ОДНАКО скажем, последний идентификатор статуса 37 и новых статусов не было, фильтрация работала бы нормально, и ничего нового не было бы возвращено, НО, если бы был новый статус, такой как с идентификатором статуса 38, ВСЕ статусы были бы возвращены, тогда как я хотел толькоone
Любая помощь как можно скорее приветствуется
Приветствия