そのため、Play Framework (1.2.5) を使用してアプリケーションを開発しています。しかし、特定のデータを取得するのに少し問題があります。
イベントとサイトの 2 つのクラスがあります。イベントは一定期間 (Joda 間隔として定義) にわたって発生し、複数のサイトが含まれます。各サイトには場所があります (緯度と経度で定義)。私がやりたいことは、特定の期間 (および場合によってはマップ境界内) にイベントに関与しているサイトのリストを取得することです。
このクエリを実行するにはどうすればよいですか? 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;
}
DBにテーブルを作成するために使用されるSQL
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)
);
ありがとう!