2016-03-29 9 views
0

Belirli kullanıcılara göre filtreli reklamlar için web uygulamasına sahibim. Kalıcılık çerçevesi olarak Java arka uç ve Hibernate kullanın. User varlıkının oneToMany ile ilişkisi var Filtre ve filtre varlıkları manyToMany Reklam varlıkları ile ilgilidir. Reklam sınıfı, insertTime özelliğine sahiptir. Amacım, yalnızca en eski değil belirli zamanlardaki reklamları yüklemektir: hafta (7 gün).Java hazırda bekletme yükü yalnızca çocuk yerleştirmeZaman en az x gün

ön uç olsun kullanıcı yöntemi:

var res = $http.get($rootScope.url+"users/getUser/"+id); 

Kullanıcı:

@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); 
    ... 

Filtre:

@Entity 
@Table(name="filters") 
public class Filter { 
    ... 
    @ManyToMany(cascade=CascadeType.ALL) 
    private Set<Ad> ads; 
    ... 

Reklam:

@Entity 
@Table(name="ads") 
public class Ad { 
    ... 
    private Date insertTime = new Date(); // > no less 7 days 
    ... 
Yük kullanıcı için

Kullanılmış DAO yöntemi:

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); 
} 

cevap

1

Hibernate filters Koşullarınızda

varlık

@Entity 
@Table(name="filters") 
public class Filter { 
    ... 
    @ManyToMany(cascade=CascadeType.ALL) 
    @FilterJoinTable(name="time", condition=":insertTime >= insertTime") 
    private Set<Ad> ads; 
    ... 

yılında

Ve sorgu oluşturma gibi veritabanından yüklemek için yoludur;

Calendar calendar = Calendar.getInstance(); // this would default to now 
calendar.add(Calendar.DAY_OF_MONTH, -7). 
session.enableFilter("time").setParameter("insertTime", calendar.getTime()); 

Ayrıca here

üzerinde örnekleri görmek istiyorum
İlgili konular