我可以使用 Liferay Service Builder 删除特定记录,但是当我想从该表中删除所有记录时该怎么办。
我是 Liferay 的新手,所以任何帮助将不胜感激......!!!
我可以使用 Liferay Service Builder 删除特定记录,但是当我想从该表中删除所有记录时该怎么办。
我是 Liferay 的新手,所以任何帮助将不胜感激......!!!
由于您的实体名称是,在您的和构建服务Location
中添加以下方法:LocationLocalServiceImpl.java
public void deleteAllLocations(){
try{
LocationUtil.removeAll();
}catch(Exception ex){
// Log exception here.
}
}
成功构建后,deleteAllLocations
将被复制到LocationLocalServiceUtil.java
您可以在操作类中使用它的位置,如下所示:
LocationLocalServiceUtil.deleteAllLocations();
这个问题已经有一个提问者满意的答案,但我想我会添加另一个相同的答案。由于您在服务实现中编写自定义方法(在您的情况下LocationLocalServiceImpl
):
LocationUtil
.Exception
并记录它。我不同意这一点,因为它会默默地失败,并且取决于应用程序逻辑,以后可能会导致问题。例如,如果您removeAll
在成功取决于正确删除所有实体的事务中被调用,并且接受的方法失败,则事务将不会回滚,因为您没有抛出SystemException
.考虑到这一点,请考虑以下事项(在您的实施中,如上所述):
public void deleteAllLocations() throws SystemException {
locationPersistence.removeAll();
}
然后,无论您从哪里调用它(例如在控制器中),您都可以控制发生故障时会发生什么
try {
LocationLocalServiceUtil.removeAllLocations();
} catch (SystemException e) {
// here whatever you've removed has been rolled back
// instead of just logging it, warn the user that an error occurred
SessionErrors.add(portletRequest, "your-error-key");
log.error("An error occurred while removing all locations", e);
}
话虽如此,您的LocationUtil
类在服务之外可用,因此您可以从控制器调用它。如果您的目标只是删除所有Location
实体而不在该事务的上下文中执行任何其他操作,则可以LocationUtil
在控制器中使用。这将使您不必重建服务层。