我在当前版本中使用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