Fórum

автоинкремент для servisebuilder

ild i, modificado 10 Anos atrás.

автоинкремент для servisebuilder

Regular Member Postagens: 158 Data de Entrada: 12/12/11 Postagens Recentes
<column name="itemId" type="long" primary="true" />
<column name="resourcePrimKey" type="long" id-type="increment" />


Вопрос такой, как можно столбец resourcePrimKey сделать независимо увиличиваемый на 1 от предыдущой записи?


  long increment = counterLocalService.increment(DepartmentList.class.getName()); 
  DepartmentList departmentList = departmentListPersistence.create(increment);
  

  System.out.println(resourceLocalService.getLatestResourceId()+"===="+departmentList.getResourcePrimKey());
  departmentList.setResourcePrimKey(resourceLocalService.getLatestResourceId()+1);
  System.out.println(resourceLocalService.getLatestResourceId()+"===="+departmentList.getResourcePrimKey());
thumbnail
Alexey Melnikov, modificado 10 Anos atrás.

RE: автоинкремент для servisebuilder

Regular Member Postagens: 108 Data de Entrada: 27/03/12 Postagens Recentes
Не совсем понял для чего это нужно и как будет использоваться.
Но если необходим независимый счетчик, то решение в лоб сделать еще один счетчик:

long increment2 = counterLocalService.increment(DepartmentList.class.getName() + ".resourcePrimKey");


Здесь имя всего-лишь строка счетчика, какой-то особой привязки к имени класса не существует.
DepartmentList.class.getName() используется больше для того если будет менятся описание сущности (например имя класса), то чтобы поймать ошибку компиляции.
d ll, modificado 10 Anos atrás.

RE: автоинкремент для servisebuilder

Regular Member Postagens: 158 Data de Entrada: 12/12/11 Postagens Recentes
не совсем то, счетчик же будет скакать на 100 после билда, нужно строго +1
thumbnail
Alexey Melnikov, modificado 10 Anos atrás.

RE: автоинкремент для servisebuilder

Regular Member Postagens: 108 Data de Entrada: 27/03/12 Postagens Recentes
d ll:
не совсем то, счетчик же будет скакать на 100 после билда, нужно строго +1


По умолчанию шаг +1, смотрите как работает com.liferay.counter.service.persistence.CounterFinderImpl.increment(String)
d ll, modificado 10 Anos atrás.

RE: автоинкремент для servisebuilder

Regular Member Postagens: 158 Data de Entrada: 12/12/11 Postagens Recentes
я проверил, идет +1. Допустим, дошел до 277, после Build Service, начинает с 301
thumbnail
Alexey Melnikov, modificado 10 Anos atrás.

RE: автоинкремент для servisebuilder

Regular Member Postagens: 108 Data de Entrada: 27/03/12 Postagens Recentes
Есть подозрение, что у вас где-то старые классы могли затесаться в сервисе.
Попробуйте полностью очистить классы и перегенировать их.

То что счетчик после редеплоя начинается с новой сотни, 2 варианта мне кажется: старый код или такое поведение у liferay сделано (хотя я такого в коде не нахожу).
thumbnail
Kairzhan Turmagambetov, modificado 10 Anos atrás.

RE: автоинкремент для servisebuilder

New Member Postagens: 5 Data de Entrada: 29/03/12 Postagens Recentes
Ответ на проблему https://www.liferay.com/community/forums/-/message_boards/message/10770835

#
# Set the number of increments between database updates to the Counter
# table. Set this value to a higher number for better performance.
#
counter.increment=100