我上课了:
class TestClass {
@Id
private ObjectId id;
private ObjectId parentId;
private String name;
private String describe;
private String privateData;
public TestClass(ObjectId parentId, String name, String describe, String privateData) {
this.parrentId = parrentId;
this.name = name;
this.describe = describe;
this.privateDate = privateData;
}
// get/set methods...
}
我可以在MongoRepository和@RequestBody中使用此类吗?安全吗? parrentId和privateData是私有属性,RequestBody不必填充它们。
mongorepository:
public interface TestClassRepository extends MongoRepository<TestClass, String> {
public TestClass findById(ObjectId id);
}
发布方法:
@RequestMapping(value="/testclass", method=RequestMethod.POST)
public void create(@RequestBody TestClass testClass) {
testClass.setParentId(...);
repo.insert(testClass);
}
例如:
{"name": "test", "describe": "test", "id": "54d5261a8314fe3c650d5b1d", "parentId": "54d5261a8314fe3c650d5b1d", "privateData": "WrongPrivateData"}
我该怎么做才能设置属性id,parentId,privateDate?
或者我需要为RequestBody创建新类吗?我不想要重复的代码。
答案 0 :(得分:0)
为DAO和VO层使用单独的模型(视图)应该更好,更安全。如果您的模型目前看起来相同,那并不意味着它们将来会保持不变。您可以使用Dozer Mapping框架进行模型之间的映射。它简单,快速,安全。 如果你需要跳过mongotemplate映射中的某些字段,请使用@Transient注释。
P.S。你不需要findById方法,因为mongotemplate已经找到了使用key作为param的方法。 TestClass应该有一个空的构造函数。