Foros de discusión

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

ild i, modificado hace 10 años.

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

Regular Member Mensajes: 158 Fecha de incorporación: 12/12/11 Mensajes recientes
<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 hace 10 años.

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

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

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


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

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

Regular Member Mensajes: 158 Fecha de incorporación: 12/12/11 Mensajes recientes
не совсем то, счетчик же будет скакать на 100 после билда, нужно строго +1
thumbnail
Alexey Melnikov, modificado hace 10 años.

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

Regular Member Mensajes: 108 Fecha de incorporación: 27/03/12 Mensajes recientes
d ll:
не совсем то, счетчик же будет скакать на 100 после билда, нужно строго +1


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

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

Regular Member Mensajes: 158 Fecha de incorporación: 12/12/11 Mensajes recientes
я проверил, идет +1. Допустим, дошел до 277, после Build Service, начинает с 301
thumbnail
Alexey Melnikov, modificado hace 10 años.

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

Regular Member Mensajes: 108 Fecha de incorporación: 27/03/12 Mensajes recientes
Есть подозрение, что у вас где-то старые классы могли затесаться в сервисе.
Попробуйте полностью очистить классы и перегенировать их.

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

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

New Member Mensajes: 5 Fecha de incorporación: 29/03/12 Mensajes recientes
Ответ на проблему 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