我有两个插件Portlet。首先,所有实体都有服务生成器。第二个Portlet使用服务的jar文件执行动态查询。
我在第二个插件portlet中使用first服务罐与数据库进行交互。但是在这个jar文件中没有任何Impl类。那就是为什么我越来越错误Impl类找不到。
以下为参考:
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(XXX.class,
PortletClassLoaderUtil.getClassLoader());
try {
XXXLocalServiceUtil.dynamicQuery(dynamicQuery);
} catch (SystemException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
错误:
[DynamicQueryFactoryImpl:96]无法找到模型com.compass.model.impl.XXXImpl
java.lang.ClassNotFoundException:com.compass.model.impl.XXXImpl
正常功能在服务生成器中正常运行
最佳答案
只是不要使用DynamicQueryFactoryUtil而是XXXLocalServiceUtil
DynamicQuery dynamicQuery = XXXLocalServiceUtil.dynamicQuery()
try {
XXXLocalServiceUtil.dynamicQuery(dynamicQuery);
} catch (SystemException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
如果要使用工厂,则必须使用接口模型而不是实体的隐含标签,因此,如果您有实体FooImpl可以起诉Foo.class并使用服务插件portlet的classloder
Classloader cl =(ClassLoader) PortletBeanLocatorUtil.locate("services-portlet", "portletClassLoader");
DynamicQueryFactoryUtil.forClass(XXX.class, cl);