0

次のような Tag クラスがあります。

public class Tag {

    private Long id;

    private String title;
    private Set<Document> documents = new HashSet<Document>();

    public Tag(){}

//getter and setter...

}

そして、いくつかのタグオブジェクトによって分類されたクラス Document

public class Document {

    private Long id;

    private String title;
    private Int numberPages;
    private Set<Tag> tags = new HashSet<Tag>();

    public Document(){}

//getter and setter...

}

そして今、最大10ページのドキュメントを取得したいと思います。それらには「短い」または「エッセイ」のタグが付いています

次のようなものだと思います:

int nPages = 10;
Query query = session.createQuery("from Document where nPages <= :numberPages and (<<short>> OR <<essay>>);  
query.setInteger("numberPages", nPages);  

タグのリストは可変である可能性があります。そして、すべてのタグが必要な場合 (タグ間の「AND」) と、任意のタグで十分な場合 (タグ間の「OR」) を区別したいと思います。

SQL ステートメントを作成するにはどうすればよいですか?

4

1 に答える 1

2

私はあなたHQLが以下のように見えるべきだと思います:

  Query query = session.createQuery(
           "from Document d join d.tags t "+
           " where d.nPages <= :numberPages and "+
              " t.title in (:titles) "; 
  List<String> titles = new ArrayList<String>();
  titles.add("short");
  titles.add("essay");
  query.setParameter("numberPages", nPages);  
  query.setParameterList("titles", titles);  
于 2012-11-26T00:53:33.280 に答える