私は現在のバージョンでPlay Frameworkを使用しています。私のモデルクラスはplay.db.jpa.JPABaseを拡張しています。GenericsとPlay Framework
今日、私は頻繁に使用されるタイプのクエリジェネリックを作成し、それを構築するための静的ヘルパーメソッドを定義しようとしました。
私は次のように書いた:
import play.db.jpa.Model;
import play.libs.F;
public class GenericQueries {
public static <T extends Model> F.Option<T> firstOption(
Class<T> clazz,
String query,
Object... parameters){
final T queryResult = T.find(query,parameters).first();
return (queryResult == null) ?
F.Option.<T>None() :
F.Option.Some(queryResult);
}
}
しかし、私は次のエラーを取得する:
Execution exception
UnsupportedOperationException occured : Please annotate your JPA model with @javax.persistence.Entity annotation.
私は、ランタイム・Tで、メソッドにデバッグ、それはモデルクラスを対応だと正しく設定されているようです。私は注釈も見ます。
私は、これを担当している遊戯人によっていくつかのクラス強化ブードゥーを疑っていますが、私は完全にはわかりません。
アイデア?
更新:追加Modelクラスここ
を要求したとして、私が使用してモデルクラスのいずれかの短縮バージョンです。
package models;
import org.apache.commons.lang.builder.ToStringBuilder;
import play.data.validation.Required;
import play.db.jpa.Model;
import play.modules.search.Field;
import play.modules.search.Indexed;
import javax.persistence.Column;
import javax.persistence.Entity;
import java.util.Date;
@Entity @Indexed
public class FooUser extends Model {
@Required
public Date firstLogin;
@Field
@Required(message = "needs a username")
@Column(unique = false,updatable = true)
public String name;
@Field
public String description;
@Required
public boolean isAdmin;
@Override
public String toString(){
return new ToStringBuilder(this)
.append("name", name)
.append("admin", isAdmin)
.toString();
}
}
は、私はあなたが上記を参照、問題が解消されないように見えるものにTypeパラメータを変更しました。私が照会しているエンティティには正しく注釈が付けられ、「通常の」照会は正常に機能します。 – msung
問題を引き起こすエンティティのコードを追加できますか? –
それをしました。上記を参照。 – msung