2012-04-12 4 views
0

Especially when working with JPA v1.0, try not to use id inheritance.JPA 2 унаследовал @Id свойство

В чем разница с JPA 2? В частности, он работает лучше, то есть может ли Stapler и Chair в примере иметь один и тот же идентификатор, когда используется strategy=GenerationType.IDENTITY? Или это зависит от внедрения JPA и/или драйвера базы данных?

+1

Ничего не изменилось в JPA2 в этой области. Вы * всегда * определяете свой идентификатор в корневом классе дерева наследования. – DataNucleus

ответ

2

Я не думаю, что сообщение в блоге имеет большой смысл.

Я даже не уверен, что невозможно определить Id в суперклассе, если это не @MappedSuperclass.

Кажется, что беспокоились об истечении Id. Если у вас может закончиться Id с n подклассами, то вы также закончите с одним классом, просто возьмите у вас в n раз больше времени, что не намного дольше. Но исчерпание идентификаторов не является проблемой, если вы используете long not и int.

Идентификатор int продлится около 100 лет с одной вставкой в ​​секунду. Все еще не «скоро», но для более высокой пропускной способности можно закончить.

Долгое время продлится около 300 миллионов лет за один миллисекунду. Не очень «скоро».

See, http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Running_Out_of_Numbers

+0

Согласен с тем, что не заканчивается 'long' ids, но меня больше беспокоит параллелизм :) –

Смежные вопросы