我想创建一个Spring Data Repository,它应该通过Spring Data Rest公开。
问题是我的"实体"不是来自数据库。我有几个具有自定义注释并被扫描的类,这提供了一些我希望向客户公开的信息。
所以基本上我需要这样的东西:
@RestRepository(path="myClasses")
interface MyRepo extends Repository<MyClass, String> {
List<MyClass> findAll();
}
class MyRepoImpl implements MyRepo {
List<MyClass> classes;
MyRepoImpl() {
// fetch stuff via classpath scanning
// and save it to "classes"
}
@Override
List<MyClass> findAll() {
return classes;
}
}
我现在复制&amp;粘贴了来自Spring Data MongoDB的大约10个文件,以便使用自定义FactoryBean等获取自定义@EnableCustomRepositories
注释。编辑批次。它仍然无法正常工作......
有一种简单的方法吗?当然,我可以使用自定义@Controller
,但之后我无法在其他实体中使用不错的rel
。
我真的需要一些extends Repository<T, ID>
并创建一些自定义方法。或者我是否必须使用CrudRepository
,以便Spring Data Rest可以找到findOne
和findAll
方法?
更确切地说:
我的应用程序有很多硬编码Permissions
,它被Spring Security使用。每组权限都有自己的类。例如:
@Permission
class UserPermission {
public final static String RESET_PASSWORD = "USER_RESET_PASSWORD";
public final static String UPDATE_PROFILE = "USER_UPDATE_PROFILE";
}
现在还有一个名为PermissionGroup
的持久化类,它被持久保存到DB。这基本上只是:
class PermissionGroup {
ID id;
List<String> permissions;
}
我想要的是,我从Spring Data Rest中获取了那些暴露我的权限的典型URL。所以我可以使用这些URL引用来添加/删除PermissionGroup的权限。即:
POST http://localhost:8080/app/permissionGroups
{
"permissions": [
{ "href" : "http://.../permissions/USER_RESET_PASSWORD" },
{ "href" : "http://.../permissions/USER_UPDATE_PROFILE" }
]
}
答案 0 :(得分:0)
不要使用任何注释或配置来使用任何数据库,那么不需要在实体类中指定,您必须在side set方法中给出实现。 -
//@Entity
//@Table(name="myClass")
class MyClass
{
private String name;
public String getName(){
}
public void setName(){
this.name = "Lisa"
}
}