删除liferay中的多行

Delete multiple rows in liferay

我有一个名为 xyz 的 table 有各种记录

service.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>

现在我想删除所有用户 ID 为 10 的用户

使用服务生成器我们可以做如下

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;

什么是 liferay 服务构建器等同于此?

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

当您在 service.xml 中声明一个 finder 时,服务构建器过程也会生成基于相同 finder 的 delete 方法。

搜索,您会找到一个方法 XyzPersistence.deletebyuserid()

可以在XyzLocalServiceImpl中新建一个方法来调用持久层删除,ant service-builder,就可以在localservice层实现海量删除

无法通过查询批量删除(据我所知)。原因是 liferay 通常有(允许)一些用于删除实体回调的钩子。此外,还有一些 finder-cache 可能无法正确跟踪这些批量删除。 您应该在 *ServiceImpl 中实现自定义批量删除方法,以处理一个事务中的那些批量删除(迭代删除)。