Tag: 存储库模式

如何使用通用存储库包装Play / JPA的Model类?

我不喜欢直接使用模型对象,因为这打破了封装。 相反,我更喜欢存储库模式 。 当我尝试实现一个简单的存储库时 public abstract class BaseRepository { public T findOne(String query, Object… params) { GenericModel.JPAQuery result = T.find(query, params); return result.first(); } } public class UserRepository extends BaseRepository{} UserRepository repo = new UserRepository(); repo.findOne(“byUsername”, “test”); 由于java的generics或JPA注释的工作方式,我得到了exception: java.lang.UnsupportedOperationException: Please annotate your JPA model with @javax.persistence.Entity annotation. at play.db.jpa.GenericModel.find(GenericModel.java:269) at repositories.BaseRepository.findOne(BaseRepository.java:12) 有没有解决的办法? (不用说模型是正确注释的,当我直接使用它时说User.find(“byUsername”, “test”).first()运行良好)。