wtorek, 23 marca 2010

Duplicate entry '0' for key 'PRIMARY'

Błąd jest spowodowany tym, że Liferay nie inkrementował klucza głównego. W pliku http://www.liferay.com/dtd/liferay-service-builder_5_2_0.dtd jest podanych kilka przykładów jak można uzyskać automatyczną inkrementację klucza, jednak każdy z nich ma jakieś ograniczenia lub ograniczone zastosowania. Tutaj podam przykład jak można to zrobić w inny sposób.

Podpatrując źródła Liferay'a, np. klasę GroupLocalServiceImpl.java znalazłem coś takiego:


String groupId = Long.toString(CounterLocalServiceUtil.increment(Group.class.getName()));

Tak więc, wystarczy zrobić coś takiego:

Entity e = EntityLocalServiceUtil.createEntity(CounterLocalServiceUtil.increment(Entity.class.getName()));
e.setContent("foobar");

EntityLocalServiceUtil.addEntity(e);

1 komentarz:

Salman Jamali pisze...

Thanks man, it was helpful.