我想创建一对多的关系,我使用了以下service.xml:
<entity name="Student" local-service="true" remote-service="true" cache-enabled="false">
<column name="studentId" type="long" primary="true" />
<column name="courses" type="Collection" entity="Course"/>
</entity>
<entity name="Course" local-service="true" remote-service="true" cache-enabled="false">
<column name="courseId" type="long" primary="true" />
<column name="studentId" type="long"/>
</entity>
Run Code Online (Sandbox Code Playgroud)
我的问题是没有为collections方法创建任何东西.没有例外,没有.生成类并且只有简单的getter方法,但没有getCourse().
我做错了什么?
是否可以创建liferay服务构建器而无需在service.xml文件中配置任何数据库表.
实际上,这里的目的是使用liferay服务构建器创建服务层.此服务层中没有直接的数据库交互.
虽然我对Liferay 6.2中的CustomSQLUtil类没有任何问题,但是我在Liferay 7中遇到了这个类的新版本的问题.的确,get方法返回null而不是预期的查询.
有人复制了吗?
以下是我在Eclipse Mars中的最后一次测试的描述:
compileOnly group:"com.liferay",name:"com.liferay.portal.dao.orm.custom.sql",version:"1.0.5"
在gradle刷新之后,我能够在我的FooFinderImpl类中使用CustomSQLUtil类来检索适当的查询.
此查询已写入default.xml文件,该文件被放入sray/custom-sql文件夹中,如Liferay 7文档中所述:
https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/custom-sql
我已经尝试了很多地方(在META-INF,在ressources ..),我甚至尝试扩展CustomSQL本机类来获取配置,但CustomSQLUtil类的get方法返回总是null而不是sql查询.
PS:我注意到这个新的"CustomSQLUtil.get"方法现在需要2个参数,除了查询ID之外还要求一个类.在这个类参数中,我输入了"Foo.class"值.
有人知道是否有配置要做?是否必须配置classpath或bundlecontext?
我有两个插件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();
}
Run Code Online (Sandbox Code Playgroud)
错误: [DynamicQueryFactoryImpl:96]无法找到模型com.compass.model.impl.XXXImpl java.lang.ClassNotFoundException:com.compass.model.impl.XXXImpl
正常功能正在服务构建器正常工作
在我的Liferay 7项目中,Service Builder可以很好地生成文件tables.sql(带有完整的sql),但不会像在Liferay 6.2中那样在SERVICECOMPONENT native liferay表中包含此内容.
因此,当我重新启动服务器时,数据库中没有更新,而数据模型已被修改.
我必须手动运行tables.sql中包含的sql脚本来暂时解决问题.
有人复制了吗?是否有任何选项(Liferay 7中的新选项?)我不知道哪个可以导致这种行为.
注意:当然,选项build.auto.upgrade(在service.properties中)设置为true,并且没有service-ext.properties可以覆盖此
大家好,
我正在使用LR 6.1.
我创建了一个名为"建议"的新实体service.xml
,然后运行BuildServices
与Ant
生成服务构建文件.现在我要删除实体.所以我删除了如果从service.xml
,但在数据库和其他文件中没有任何反应:数据库表在这里,另一个生成文件.
任何的想法?
非常感谢.
在liferay中,我有一个实体如下:
<entity name="Foo" local-service="true" remote-service="true">
<!-- PK fields -->
<column name="fooId" type="long" primary="true" />
<!-- Group instance -->
<column name="groupId" type="long" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="userId" type="long" />
<column name="userName" type="String" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="field1" type="String" />
<column name="field2" type="boolean" />
<column name="field3" type="int" />
<column name="field4" type="Date" />
<column name="field5" type="String" />
<!-- Order -->
<order by="asc">
<order-column name="field1" />
</order>
<!-- …
Run Code Online (Sandbox Code Playgroud) 我可以点击“添加图书”:
但是我需要有机会在我的书中添加作者的名字。所以我创建了新项目,新的 Service Builder 和新实体“作者”,现在我也可以添加作者。但是,当我单击“添加书籍”时,如何使用现有作者制作下拉菜单?如何将该字段与新表 - “作者”绑定?