删除 liferay 服务构建器中特定字段值的记录
Delete record on sepecific field value in liferay service builder
我想使用字段名称删除特定记录
Table:虚拟实体
- 字段 ID
字段名称
public void deleteLocation(req, res){
String getLocationName = request.getParameter("locationName");
Location locationToDelete = new LocationImpl();
locationToDelete.setLocationName(getLocationName);
LocationLocalServiceUtil.deleteLocation(locationToDelete);
}
它没有向我显示任何错误,但记录没有被删除。请帮帮我
如果你想通过 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
实现此目的的最简单方法是为 service.xml
中的特定字段添加 <finder>
节点,如下所示(说 Location
是您的实体名称,name
是您的字段名称,Name
是 service.xml
中查找器条目的名称)和构建服务:
<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
中的操作 class,您可以像这样调用它:
public void deleteLocation(req, res){
String locationName = request.getParameter("locationName");
LocationLocalServiceUtil.deleteLocationsByName(locationName);
}
就是这样,您已将自定义查找器方法添加到您的服务中。
我想使用字段名称删除特定记录
Table:虚拟实体
- 字段 ID
字段名称
public void deleteLocation(req, res){ String getLocationName = request.getParameter("locationName"); Location locationToDelete = new LocationImpl(); locationToDelete.setLocationName(getLocationName); LocationLocalServiceUtil.deleteLocation(locationToDelete); }
它没有向我显示任何错误,但记录没有被删除。请帮帮我
如果你想通过 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
实现此目的的最简单方法是为 service.xml
中的特定字段添加 <finder>
节点,如下所示(说 Location
是您的实体名称,name
是您的字段名称,Name
是 service.xml
中查找器条目的名称)和构建服务:
<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
中的操作 class,您可以像这样调用它:
public void deleteLocation(req, res){
String locationName = request.getParameter("locationName");
LocationLocalServiceUtil.deleteLocationsByName(locationName);
}
就是这样,您已将自定义查找器方法添加到您的服务中。