0
私は特定のフィルタによる印刷ユーザー広告のためのWebアプリケーションを持っています。バックエンドではJava
、パーシスタンスフレームワークではHibernate
を使用します。 User
エンティティはoneToMany
のフィルタエンティティとの関係を持ち、フィルタはmanyToMany
の広告エンティティとの関係を持っています。広告クラスにはinsertTimeプロパティがあります。私の目標は、最も古いものではない特定の時間、例えば週(7日間)の広告のみを読み込むことです。Java hibernate load only childのinsertTimeはx日以上である
フロントエンドユーザーの方法を取得する:
var res = $http.get($rootScope.url+"users/getUser/"+id);
ユーザー:
@Entity
@Table(name="users")
public class GeUser {
...
@OneToMany(fetch = FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="user")
@OrderBy("id")
private Set<Filter> filters = new HashSet<Filter>(0);
...
フィルタ:
@Entity
@Table(name="filters")
public class Filter {
...
@ManyToMany(cascade=CascadeType.ALL)
private Set<Ad> ads;
...
広告:
@Entity
@Table(name="ads")
public class Ad {
...
private Date insertTime = new Date(); // > no less 7 days
...
ロード・ユーザーのためのDAOのメソッドを使用します
:
public GeUser getUser(int id){
Criteria criteria = session.createCriteria(GeUser.class);
criteria.add(Restrictions.eq("id",id));
@SuppressWarnings("unchecked")
List<GeUser> results = criteria.list();
if(results.size()<1)return null;
return results.get(0);
}