我可以使用Liferay Service Builder删除特定记录,但是当我想删除该表中的所有记录时该怎么做。
我是Liferay的新手所以任何帮助都会受到赞赏...... !!!
答案 0 :(得分:0)
由于您的实体名称为Location
,请在LocationLocalServiceImpl.java
和构建服务中添加以下方法:
public void deleteAllLocations(){
try{
LocationUtil.removeAll();
}catch(Exception ex){
// Log exception here.
}
}
成功构建后,deleteAllLocations
将被复制到LocationLocalServiceUtil.java
,您可以在其中将其用作动作类:
LocationLocalServiceUtil.deleteAllLocations();
答案 1 :(得分:0)
该问题已经有了一个问询,要求问问者满意,但我想我会再添加一个相同的答案。由于您是在服务实现中编写自定义方法(在您的情况下为LocationLocalServiceImpl
):
LocationUtil
。Exception
并将其记录下来。我不同意这一点,因为它会静默地失败,并且取决于应用程序逻辑,以后可能会引起问题。例如,如果在事务中调用了removeAll
,而该事务的成功取决于是否正确删除所有实体,而接受的方法失败,则该事务将不会回滚,因为您不会抛出{{1} }。考虑到这一点,请考虑以下内容(在您的实现中,如上所述):
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
。这将使您不必重建服务层。