У меня есть следующие структуры данных:
@Entity
@FilterDef(name="usageHistoryFilter", parameters=@ParamDef( name="updateDate", type="date" ))
@Table(name = "Services")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Service extends DBEntity {
private Set<UsageHistory> usageHistorySet;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "ServiceUsageHistory", joinColumns = @JoinColumn(name = "service_id"), inverseJoinColumns = @JoinColumn(name = "usageHistory_id"))
@Filter(name = "usageHistoryFilter", condition="NEEDED_CONDITION")
public Set<UsageHistory> getUsageHistorySet() {
return usageHistorySet;
}
...
}
@Entity
@Table(name = "UsageHistorys")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class UsageHistory extends DBEntity {
private Date lastUpdateDate;
private AgentDetails agentDetails;
@Column(name = "updateDate")
public Date getLastUpdateDate() {
return lastUpdateDate;
}
@ManyToOne
public AgentDetails getAgentDetails() {
return agentDetails;
}
...
}
@Entity
@Table(name = "AgentDetails")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class AgentDetails extends DBEntity {
private boolean local;
@Column(name = "local")
public boolean isLocal() {
return local;
}
}
Я пытался реализовать запрос, который будет получать все службы, обновленные после указанной даты, и это довольно легко сделать.Следующая часть: набор UseHistory в извлеченных сервисах должен содержать только объекты ObjectHistory, которые были обновлены после указанной даты, а их объекты agentsDetails имеют свойство 'local' со значением 'true'.
После некоторого поиска в Google я обнаружил, чтодолжно быть выполнимо с использованием фильтров.И тут возникает моя проблема, я попытался написать условие фильтра самостоятельно, но мой недостаток знаний слишком велик.Я не знаю, возможно ли вообще создать условие, которое будет учитывать все мои требования.
Можете ли вы помочь мне с этим или укажете другой способ добиться этого?
Я упомяну этобаза данных будет содержать тысячи сервисов, каждый из которых содержит миллионы объектов History.