我有两个插件portlet。首先是包含所有实体的服务构建器。第二个portlet正在使用服务的jar文件来执行动态查询。
我在第二个插件portlet中使用第一个服务jar来与数据库进行交互。但是在这个jar文件中没有任何Impl类。这就是为什么我得到错误Impl Class未找到。 以下是供参考:
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
正常功能正常服务构建器
答案 0 :(得分:5)
只是不要使用 DynamicQueryFactoryUtil ,而是使用XXXLocalServiceUtil这样
DynamicQuery dynamicQuery = XXXLocalServiceUtil.dynamicQuery()
try {
XXXLocalServiceUtil.dynamicQuery(dynamicQuery);
} catch (SystemException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
如果你想使用工厂,你必须使用接口模型而不是实体的impl,所以如果你有一个实体FooImpl起诉Foo.class并使用你的服务插件portlet的类别
Classloader cl =(ClassLoader) PortletBeanLocatorUtil.locate("services-portlet", "portletClassLoader");
DynamicQueryFactoryUtil.forClass(XXX.class, cl);
答案 1 :(得分:1)
两者都适合我......
ClassLoader classLoader = (ClassLoader)PortletBeanLocatorUtil.locate(ClpSerializer.getServletContextName(), "portletClassLoader");
OR
ClassLoader classLoader = PortletBeanLocatorUtil.getBeanLocator(ClpSerializer.getServletContextName()).getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(charges.class,classLoader);
谢谢@Romeo。
答案 2 :(得分:0)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<h3>Vue app : </h3>
Counter :
{{ counter }}
</div>
<h3>Outside of vue : </h3>
<button onclick="inc()">
Inc
</button>
这对我有用!!!!