ModelService.create(new TestModel.class)
将创建指定类型的单个实例,并将其连接到modelservice的上下文。 但它只会被保存到持久性存储,当你调用modelService.save(newInstance)
ModelService.get()
返回一个模型对象,但需要一个Jalo对象作为输入,(Jalo是的hybris遗留下来的持久层),这样就不会为你工作。
要检索对象,您可以使用FlexibleSearchService
编写自己的查询,也可以查看DefaultGenericDao
,该对象具有一堆简单的find()
类型的方法。
通常情况下,您会注入像例如:
private GenericDao<TestModel> dao;
[...]
public void myMethod()
{
List<TestModel> allTestModels = dao.find();
[...]
}
有很多更多的方法可以用来创建WHERE
类型的语句来限制您的结果。
关于ValidateInterceptor
: 看一看维基页面拦截器的生命周期: https://wiki.hybris.com/display/release5/Interceptors
这不是修改类型为“所有”的对象,同时该类型的拦截器是个好主意。 因此,如果您在为Test
项目类型声明的拦截器中,则不要尝试修改其中的项目。 如果您碰巧遇到不同的拦截器并且想要修改不同类型的项目: 例如,你有Type1
其中有一个Type2
对象的列表和在拦截器中的Type1
你想要修改所有的Type2
对象。 对于这些场景,您必须将您修改的实例Type2
添加到拦截器上下文中,以便这些更改将被保留。 这会是这样的:
void onValidate(Test1 model, InterceptorContext ctx) throws InterceptorException
{
...
List<Type2> type2s = dao.find();
for (Type2 type2 : type2s)
{
// do something with it
// then make sure to persist that change
ctx.registerElementFor(type2, PersistenceOperation.SAVE);
[...]
}
}
请看看[问]有关如何最好地修改您的帖子,所以它是明确的和可以理解的信息。如果可能的话也创建一个[mcve]。 –