2013-02-22 79 views
0

因此,我使用Play Framework(1.2.5)開發應用程序。但是我在檢索某些特定數據時遇到了一些麻煩。涉及Joda Intervals的JPA查詢

我有兩個類:事件和網站。事件發生在一段時間(定義爲Joda間隔)幷包含多個站點。每個網站都有一個位置(用lat和lng定義)。我想要做的是獲取特定時間段內(並可能在地圖邊界內)涉及事件的站點列表。

我該如何去做這個查詢?我嘗試過使用JPA的CriteriaBuilder,甚至自己寫出這個查詢,但是我不知道如何處理這些時間段。

事件模型

@Entity 
@Table(name = "event") 
public class Event extends GenericModel { 
    @Id 
    @GeneratedValue 
    public Long id; 
    @Columns(columns = { 
     @Column(name = "start"), 
     @Column(name = "end")}) 
    @Type(type = "org.joda.time.contrib.hibernate.PersistentInterval") 
    public Interval eventPeriod; 
    public String title; 
    @ManyToMany 
    public List<Site> sites = new ArrayList<Site>(); 
} 

網站模式

@Entity 
@Table(name = "site") 
public class Site extends Model { 
    @Column(name = "akey", unique = true, nullable = false) 
    public String key; 
    public Double latitude; 
    public Double longitude; 
} 

SQL使用DB

CREATE TABLE event (
    id BIGINT(20) NOT NULL AUTO_INCREMENT , 
    start DATETIME NOT NULL , 
    end DATETIME NOT NULL , 
    title VARCHAR(255) NOT NULL , 
    PRIMARY KEY (id) 
); 

CREATE TABLE site (
    id BIGINT(20) NOT NULL AUTO_INCREMENT , 
    akey VARCHAR(255) NOT NULL , 
    latitude DOUBLE NOT NULL , 
    longitude DOUBLE NOT NULL , 
    PRIMARY KEY (id) , 
); 

CREATE TABLE event_site (
    event_id BIGINT(20) NOT NULL, 
    sites_id BIGINT(20) NOT NULL, 
    KEY FKevent_id (event_id), 
    KEY FKsites_id (sites_id) 
); 

由於創建表!

回答