я не класс Tag, который хранит ссылку на набор Статусы с помощью TagStatus присоединиться к таблице, в настоящее время не существует объект для него в системезимуют @JoinTable аннотацию и критерии не работают должным образом
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;
}
}
I я автоматически извлекаю данные динамически с фронта, чтобы делать это каждый раз, когда отображаются статусы, последний статус сохраняется, и все статусы впоследствии отображаются (при большем значении 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();
}
Несмотря на то, что он работает нормально, все статусы возвращаются. HOWEVER позволяет сказать последний идентификатор статуса 37, и не было никаких новых статусов, фильтрация будет работать нормально, и ничего нового не будет возвращено. НО если будет новый статус, например, с идентификатором статуса 38 ВСЕ, статус будет возвращен, тогда как я хотел бы только один
Любая помощь как можно скорее высоко оценили
Приветствия