Удалить несколько строк в LifeRay - PullRequest
1 голос
/ 11 апреля 2019

У меня есть таблица с именем xyz с различными записями

enter image description here

В файле 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>

Теперь я хочу удалить всех пользователей, имеющих ИД пользователя 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

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Когда вы объявляете искатель в service.xml, процедура построителя сервисов также генерирует метод удаления на основе того же искателя.

Поиск, и вы найдете метод как XyzPersistence.deletebyuserid ()

Вы можете создать новый метод в XyzLocalServiceImpl для вызова удаления в постоянном слое ant service-builder, и вы получите массовое удаление в слое localservice.

0 голосов
/ 11 апреля 2019

Массовое удаление по запросу невозможно (насколько я знаю).Причина в том, что liferay обычно имеет (допускает) некоторые хуки для обратных вызовов удаления объекта.Также есть некоторый кеш-поиск, который может не отслеживать эти массовые удаления должным образом.Вам лучше реализовать собственный метод массового удаления в вашем * ServiceImpl, который обрабатывает эти массовые удаления (повторное удаление) внутри одной транзакции.

...