Forums

Home » Liferay Portal » Pусский

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
l ll
автоинкремент для servisebuilder
July 4, 2013 7:30 PM
Answer

l ll

Rank: Junior Member

Posts: 74

Join Date: December 12, 2011

Recent Posts

1<column name="itemId" type="long" primary="true" />
2<column name="resourcePrimKey" type="long" id-type="increment" />


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


1  long increment = counterLocalService.increment(DepartmentList.class.getName());
2  DepartmentList departmentList = departmentListPersistence.create(increment);
3 
4
5  System.out.println(resourceLocalService.getLatestResourceId()+"===="+departmentList.getResourcePrimKey());
6  departmentList.setResourcePrimKey(resourceLocalService.getLatestResourceId()+1);
7  System.out.println(resourceLocalService.getLatestResourceId()+"===="+departmentList.getResourcePrimKey());
Alexey Melnikov
RE: автоинкремент для servisebuilder
July 5, 2013 12:52 AM
Answer

Alexey Melnikov

Rank: Regular Member

Posts: 108

Join Date: March 27, 2012

Recent Posts

Не совсем понял для чего это нужно и как будет использоваться.
Но если необходим независимый счетчик, то решение в лоб сделать еще один счетчик:

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


Здесь имя всего-лишь строка счетчика, какой-то особой привязки к имени класса не существует.
DepartmentList.class.getName() используется больше для того если будет менятся описание сущности (например имя класса), то чтобы поймать ошибку компиляции.
l ll
RE: автоинкремент для servisebuilder
July 29, 2013 1:07 AM
Answer

l ll

Rank: Junior Member

Posts: 74

Join Date: December 12, 2011

Recent Posts

не совсем то, счетчик же будет скакать на 100 после билда, нужно строго +1
Alexey Melnikov
RE: автоинкремент для servisebuilder
July 29, 2013 1:23 AM
Answer

Alexey Melnikov

Rank: Regular Member

Posts: 108

Join Date: March 27, 2012

Recent Posts

d ll:
не совсем то, счетчик же будет скакать на 100 после билда, нужно строго +1


По умолчанию шаг +1, смотрите как работает com.liferay.counter.service.persistence.CounterFinderImpl.increment(String)
l ll
RE: автоинкремент для servisebuilder
November 25, 2013 10:25 AM
Answer

l ll

Rank: Junior Member

Posts: 74

Join Date: December 12, 2011

Recent Posts

я проверил, идет +1. Допустим, дошел до 277, после Build Service, начинает с 301
Alexey Melnikov
RE: автоинкремент для servisebuilder
July 29, 2013 1:53 AM
Answer

Alexey Melnikov

Rank: Regular Member

Posts: 108

Join Date: March 27, 2012

Recent Posts

Есть подозрение, что у вас где-то старые классы могли затесаться в сервисе.
Попробуйте полностью очистить классы и перегенировать их.

То что счетчик после редеплоя начинается с новой сотни, 2 варианта мне кажется: старый код или такое поведение у liferay сделано (хотя я такого в коде не нахожу).
Kairzhan Turmagambetov
RE: автоинкремент для servisebuilder
November 25, 2013 6:26 AM
Answer

Kairzhan Turmagambetov

Rank: New Member

Posts: 5

Join Date: March 29, 2012

Recent Posts

Ответ на проблему 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