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)
);
由於創建表!