我在當前版本中使用Play框架,我的模型類擴展了play.db.jpa.JPABase。泛型和播放框架
今天我試着做一個常用的查詢類型,並定義一個靜態幫助方法來構造它。
我寫了下面:
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.
我調試到方法,在運行時牛逼似乎是正確設置它的相應的模型類。我甚至看到了註釋。
我懷疑有些職業球員會爲此負責,但我並不完全確定。
任何想法?
更新:根據要求
加入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();
}
}
我改變了類型參數,你看到了什麼上面,這個問題似乎仍然存在。我正在查詢的實體被正確註釋,「正常」查詢作品沒問題。 – msung
你可以添加導致問題的實體代碼嗎? –
是否做到了。往上看。 – msung