0

次のフィールドで構成されるpojoがあります

public class tooks 
{

    private String bbb;
    private DateTime ccc;
    private String ddd;
    private boolean eee = true;

    }

今、私は次のSQLを持っています..

    SELECT distinct u.bbb, 'Not Defined' Access_Type, u.ccc, u.ddd 
        FROM IOA_tooks u where u.eee='N' order by u.aaa

ご覧のとおり、列 Access_Type はクエリ自体で作成され、上記の pojo にはプロパティがありません。このSQLをhqlに変換する方法と、pojoで行う必要がある変更を提案してください

4

1 に答える 1

0

このようなもの (「Y」/「N」をブール型にマップする場合は、カスタム データ型を作成する必要があることに注意してください。この例では文字列に固執します):

public class tooks {
    private String bbb;
    private DateTime ccc;
    private transient String accessType = "Not Defined";
    private String ddd;
    private String eee = "Y";
}

あなたが何をしようとしているのか本当にわかりません。他の情報を提供していないので、accessTypeを常に「未定義」にしたいだけだと思います。これはデータベース内の実際の列ではないため、論理的にオブジェクト内のどのフィールドにもマップされません。したがって、bbb、ccc、ddd、および eee をマッピング ファイル / 注釈でマッピングするだけで、accessType はデータベースとは無関係なのでマッピングしないでください。

Hibernate は、フィールド マッピングで一時的なフィールドを無視します。メソッド マッピング (ゲッター/セッター) を使用している場合は、getAccessType と setAccessType を JPA の @Transient アノテーションでマークする必要があります。Hibernate はそれらを無視します。

次に、HQL は SQL とほとんど同じです。

List<took> tooks = (List<took>)session.createQuery("select distinct t from took t where t.eee = 'N' order by t.aaa asc").list();

結果のすべてのオブジェクトには accessType == "Not Defined" が含まれますが、データベースから選択されたからではなく (マップされていないため)、Java オブジェクトで初期化された値にすぎないことに注意してください。あなたが目指していた最終結果。

于 2013-08-05T04:32:55.503 に答える