0

Folder :idRecord :refId (名前付きパラメーター)がある場合に、 Folderに存在するレコードを取得する JPQL クエリを作成するにはどうすればよいでしょうか。必要なレコードの一部である他のデータがあるため、レコードをクエリから返したいと思います。

エンティティは次のとおりです。

@Entity
public class Folder {
    @Id
    @Column(name = "id")
    private Long id;

    @OneToMany(targetEntity = Record.class, cascade = { CascadeType.ALL })
    @JoinColumn(name = "RECORD_FOLDER_0")
    @OrderBy("id ASC")
    private List<Record> records;
    ...
}

@Entity
public class Record {
    @Id
    @Column(name = "id")
    private Long id;

    @Basic
    @Column(name = "refId")
    private Long refId;

    @Basic
    @Column(name = "data", length = 255)
    private String data;
    ...
}

通常の SQL は次のようになります。

.createNativeQuery(String.format("SELECT * FROM record r WHERE r.refId=%d AND r.RECORD_FOLDER_0=%d", refId, folderId));

JPQLクエリを使用してこれを行う方法に苦労しています。

4

1 に答える 1

1

Folderからの親への参照がないため、Recordから開始してFolder、子 に参加する必要がありますRecord。このような何かがうまくいくはずです:

TypedQuery<Record> q = em.createQuery(
    "SELECT r FROM Folder f JOIN f.records r " +
    "WHERE f.id = :folderId AND r.refId = :refId", Record.class);
q.setParameter("folderId", folderId);
q.setParameter("refId", refId);
于 2013-05-26T01:02:48.660 に答える