删除liferay中的多行

删除liferay中的多行,liferay,liferay-6,liferay-service-builder,Liferay,Liferay 6,Liferay Service Builder,我有一个名为xyz的表,其中包含各种记录 xml具有下面提到的条目 <entity name="xyz" local-service="true" remote-service="true" cache-enabled="true" json-enabled="true"> <column name="sno" type="int" primary="true" id-type="identity"></column> <

我有一个名为xyz的表,其中包含各种记录

xml具有下面提到的条目

<entity name="xyz" local-service="true" remote-service="true" cache-enabled="true" json-enabled="true">
        <column name="sno" type="int" primary="true" id-type="identity"></column>
        <column name="name" type="String"></column>
        <column name="address" type="String"></column>
        <column name="userid" type="int"></column>

        <finder return-type="Collection" name="userid">
            <finder-column name="userid"></finder-column>
        </finder>
    </entity>
liferay service builder与此等效的是什么


我正在使用liferay-6.2-ce-ga3

当您在service.xml中声明查找程序时,service builder过程也会基于同一查找程序生成delete方法

搜索后,您将找到一个名为XyzPersistence.deletebyuserid()的方法


您可以在XyzLocalServiceImpl中构建一个新方法来调用持久化层中的delete,
ant service builder
,这样您就可以在本地服务层中进行大规模删除。

通过查询进行批量删除是不可能的(据我所知)。原因是liferay通常有(允许)一些钩子用于删除实体回调。此外,还涉及一些查找器缓存,它们可能无法正确跟踪这些大容量删除。
您应该在*ServiceImpl中实现自定义批量删除方法,在一个事务中处理这些批量删除(迭代删除)。

感谢@Daniele Baggio的快速响应,对于我在xyzutil中找到removebyuserid的查找者,这可以用于删除操作,但是,如果没有查找器,有没有办法删除多个条目呢?您可以编写一个自定义的本机sql语句来进行批量更新/删除。从这里开始:。注意缓存,如果og自定义sql更新,您必须手动重置
List<xyz> xyzList = XyzLocalServiceUtil.findbyuserid(10);
if(xyzList!=null && !xyzList.isEmpty()){
    for (xyz xy : xyzList) {
      xyzListLocalServiceUtil.deleteXyz(xy.getSno());
    }
}
delete from xyz where userid =10;