【问题标题】:Delete record on sepecific field value in liferay service builder删除 liferay 服务生成器中特定字段值的记录
【发布时间】:2016-06-04 04:45:53
【问题描述】:

我想使用字段名称删除特定记录

表:虚拟实体

  • 字段 ID
  • 字段名称

    public void deleteLocation(req, res){
    String getLocationName = request.getParameter("locationName");
    Location locationToDelete = new LocationImpl();
    locationToDelete.setLocationName(getLocationName);
    LocationLocalServiceUtil.deleteLocation(locationToDelete);
    }
    

它没有显示任何错误,但记录没有被删除。请帮帮我。

【问题讨论】:

  • 好吧,您可以通过在您的service.xml 中为该特定字段添加finder 节点来实现此目的。成功构建后,它将根据该列在您的服务中添加 CRUD 操作。
  • 进一步阐述您的问题。 name 你的领域是什么?它接受什么样的value?另外,请指定实体名称,以便我总结更改。
  • Name 字段是String 类型?
  • @ParkashKumar:是的

标签: liferay liferay-6 liferay-service-builder


【解决方案1】:

如果你想通过 id 删除一个元素,你可以通过 "LocalServiceUtil.delete(id)" 来完成 如果您想通过 id 以外的其他字段删除元素,则需要为此执行自定义查询,您可以在门户网站中搜索文件:portal.xml 包含此示例:

<sql id="com.liferay.portal.service.impl.ResourceBlockLocalServiceImpl.deleteResourceBlock">
        <![CDATA[
            DELETE FROM
                ResourceBlock
            WHERE
                (referenceCount <= 0) AND
                (resourceBlockId = ?)
        ]]>
    </sql>

您可以在此处查看如何实现自定义查询:

https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/developing-custom-sql-queries

【讨论】:

    【解决方案2】:

    实现这一点的最简单方法是在service.xml 中为该特定字段添加&lt;finder&gt; 节点,如下所示(说Location 是您的实体名称,name 是您的字段名称,Nameservice.xml 中的 finder 条目名称和构建服务:

    <column name="name" type="String" />
    
    <finder name="Name" return-type="Collection">
        <finder-column name="name" />
    </finder>
    

    成功构建后,它将根据该列在您的服务中创建 CRUD 操作。现在您可以在LocationUtil.java 中找到以下方法:

    findByName,
    removeByName,
    countByName,
    

    LocationLocalServiceImpl.java 中创建以下(新)方法:

    public void deleteLocationsByName(String name){
        try{
            LocationUtil.removeByName(name);
        }catch(Exception ex){
            // log your exception
        }
    }
    

    同样,在构建服务时,此方法将可用于来自 LocationLocalServiceUtil.java 的操作类,您可以在其中调用它:

    public void deleteLocation(req, res){
        String locationName = request.getParameter("locationName");
        LocationLocalServiceUtil.deleteLocationsByName(locationName);
    }
    

    就是这样,您已将自定义查找器方法添加到您的服务中。

    【讨论】:

    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2011-04-14
    • 2022-12-09
    相关资源
    最近更新 更多