|
|
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
Добрый день! Не подскажет ли кто как побороть следующую проблемку: Имеется некий EntityBean, Customer одним из полей котороя является поле отношения, т.е. foreign-key на поле другого EntityBean Address . При чем primary-key в таблице ADDRESS является автоинкрементным полем. Теперь собсно суть проблемы: При попытке создать новый обьект Address (нечто вроде Код: plaintext [IBM][CLI Driver][DB2/NT] SQL0798N Нельзя задавать значение для столбца "ID", который определен как GENERATED ALWAYS. SQLSTATE=428C9 Если же поле сделать обычным а не автоинкрементным, то ошибка такая: [IBM][CLI Driver][DB2/NT] SQL0407N Пустое значение (NULL) невозможно присвоить столбцу "TBSPACEID=2, TABLEID=4, COLNO=0", определенному как не допускающий пустых значений. SQLSTATE=23502 фрагмент деплоймент-дескриптора: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 22:16 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
совет: EJB2.x ап стену. точно знаю, что у меня такое работало (на DB2). попробую найти в старых сырцах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 03:21 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
Триггер напиши. Типа если пытаемся инсертить NULL, то заменяем его на что-нибудь другое. ====================== - Я подхожу к клетке с медведем панда... Видите, какие у него черные круги под глазами?! Медведь панда как бы всем своим видом говорит нам: "Не бухайте!" ====================== ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 13:44 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
Триггер, увы, не подходит. Скорее всего проблема в том, что не зависимо от того, автоинкрементное поле или нет - JBOSS пытается втиснуть туда какое-то значение,точнее NULL. То есть, первый раз ишибка говорит о том что нельзя самому записывать значения в автоинкрементные поля, а во втором - нельзя записать NULL в поле, обьявленное как NOT NULL. То есть, думаю что есть смысл немного префразировать вопрос : Чего надо добавить в деплоймент-дескриптор, для того что-бы JBOSS (или любой другой контейнер) не пытался втиснуть значение в автоинкрементное поле? expp , откопал исходники??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 22:43 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
откопать, то откопал. да жена забрала плееер который служит флешкой. поэтому на работу их не принёс. автоинкремент работал без б. ты в create() Ничего в id не пишешь?. а id-генератор DB2 указал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 02:34 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
В ID ничего не пишу - 100%. Скорее всего, помимо ejb-jar.xml, нужно добавить нечто специфичное в jboss.xml или в jbosscmp-jdbc.xml ...She gave me something, it was a mushroom... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 21:52 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
ты что всё руками пишешь? Xdoclet'ы не юзамши? без vendor specific deployment descriptor ни палучица ни чё. в Xdoclet указывается Id-генератор для DB2, он пишется в jbosscmp-jdbc.xml. дистанция от дома до работы для исходников просто непреодолима... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 02:17 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
Как раз именно XDoclet'ом и пользуюсь: Перед абстрактным методом getId() есть такая инструкция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. и в jbosscmp-jdbc.xml или в jboss.xml (точно не помню - исходники дома) присутсвует тег в описании свойств поля ID, нечто вроде <auto-increment/> ...She gave me something, it was a mushroom... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 12:59 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
это для гипесонека (исходники с DB2 лежат дальше) jbosscmp-jdbc.xml: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. для DB2 отличие в том, что нужно указать класс генератора который не упомянут в доке, но есть в пакете org.jboss.ejb.plugins.cmp.jdbc (ищи в jar'ах jboss'a) и забей на 2.x этташ ужац. ну и если есть возможность отплеваться от DB2 имхо то её туда же. попробуй Derby - это ibm овский микроdb2 на жаби. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2006, 02:32 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
Проблема видимо с CMP компонентом :) Может ссылка поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2006, 20:42 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
expp, Kachalov - большое вам спасибо! Действительно, все решилось с помощью: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCDB2IdentityValLocalCreateCommand - класс для DB2 P.S. expp , почему столько нареканий в адрес EJB 2.0? Я эту технологию только начал изучать, ну и невольно начала задаваться вопросом почему ее так критикуют? Просвяти... ...She gave me something, it was a mushroom... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 14:08 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
_ChesterP.S. expp , почему столько нареканий в адрес EJB 2.0? Я эту технологию только начал изучать, ну и невольно начала задаваться вопросом почему ее так критикуют? Просвяти... ...She gave me something, it was a mushroom... ИМХО: Во-первых на носу спецификация 3.0, во-вторых, она (EJB 2.0 spec) довольно сложная по сравнению с существующими ныне ORM-средствами. Правда EJB не ограничивается простым ORM, но Session Beans, а тем более Message Driven Beans используются гораздо реже, чем Entity Beans. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 17:58 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
авторexpp, почему столько нареканий в адрес EJB 2.0 бу-го-га!!! потому, что это мёртворождённый жупел. Как ты понял я имел достаточный experince в 2.x, несмотря на это, потважился похерить их и перетащить проекту на ещё сырые ejb3.0. теперь серьёзно. добавлять к session bean ам (читай COM объектам) состояние для того что бы получить entity bean было заблуждением афтароф спецификации. для заделывания этой дыры используются DTO с фасадом. кто видел entity с remote интерфейсом??? (это не я придумал, а прочитал на форуме tss). ну а про XML dd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2006, 02:22 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
Хм... как-то не привычно слышать о том что session beans ипользуются реже чем entity beans. Доводилось видеть несколько проектов (не маленьких) - 90% реализовано на session stateless beans. Правда еще EJB 1.1 (похоже, посты начинают выходить за рамки темы :) ) ...She gave me something, it was a mushroom... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2006, 11:43 |
|
||
|
EJB 2.0 EntityBean + ссылка на автоинкрементное поле
|
|||
|---|---|---|---|
|
#18+
>>не привычно слышать о том что session beans ипользуются реже чем entity beans наверное меня не правильно поняли. ну и номальный дизайн: "куча сущностей+фасад" >>(похоже, посты начинают выходить за рамки темы :) ) да, посты просто не видят ни краёв не берегов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 02:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33810143&tid=2148831]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 432ms |

| 0 / 0 |
