0

そのため、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)
);

ありがとう!

4

1 に答える 1