1

オブジェクト全体のデフォルトの Hibernate 動作を維持しながら、既存のエンティティ オブジェクトにネイティブ SQL クエリを実行しようとしています。

オブジェクトのフィールドの大部分は次のようにマッピングされます。

@Column(name = "FIRST_NAME", nullable = false)
public String getFirstName() {
    return firstName;
}

@Column(name = "MIDDLE_NAME", nullable = true)
public String getMiddleName() {
    return middleName;
}

@Column(name = "LAST_NAME", nullable = false)
public String getLastName() {
    return lastName;
}

@Column(name = "PRIMARY_EMAIL_ADDR", nullable = false)
public String getPrimaryEmailAddress() {
    return primaryEmailAddress;
}

この機能を保持したいのですが、カスタム (できればネイティブ) SQL クエリへのマッピングが必要な 1 つのフィールドを追加します。・・・のようなものを想定しました。

Private String foo;
@NativeSQLQuery("SELECT info FROM foo")
public String getFooInfo{return foo}

..しかし、それと同じくらい簡単にこれを行う方法があれば、私はそれを見逃しています。

私は調査SqlResultSetMappingし、いくつかの同様のネイティブおよび名前付きクエリの注釈を調べましたが、見つけることができるのは、クラス レベルで動作していること、つまりエンティティ全体が 1 つのフィールドだけでなく、カスタムのネイティブな方法でマップされていることを前提としているようです。通常の機能を維持しながら、1 つのフィールドにカスタム マッピングを追加するにはどうすればよいですか? hbm ファイルを使用する前にこれを行ったことがありますが、かなり前のことだと思いますが、この現在のプロジェクトは注釈ベースです。現時点で私が思いつく最善の方法は、ゲッターにマークを付けて、@Transientそれをまったくマップせず、それを使用してクエリを実行することですが、それが合計のように見えるという理由だけで、実際にはそうしたくありませんハック。

4

1 に答える 1

1

を使用してみてください。動作する@Formula("SELECT info FROM foo")はずです

于 2013-08-15T18:15:09.987 に答える