我有两个插件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);

07-24 09:23