|
|
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
Seam-gen cгенерировал проект. Нахожусь в окошечке редактирования данных: mYentitjaEdit.xhtml там опрашивается переменная #{mYentitjaHome.managed} - если она true (т.е. seam хочет управлять объектом!) то он при клике на любой мой <h:commandButton посылает через Hibernet: update myShema.mYentitjaTbl set NAME=?, ... но ДО этого происходит вызов из написанной мною функции (которая вызывается по той же самой <h:commandButton!) некоей моей DB-StoredProc, которая апдейтит табличку myShema.mYentitjaTbl "кошерно". Т.е. вышепоказанный автоматизм от хайбернета (update myShema.mYentitjaTbl) не нужен и даже очень вреден! Вопрос: как (каким трюком) его избежать, оставляя всё остальное (select, insert) таки в управляемом mnaged режиме?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 03:38:29 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
* mnaged режиме = managed режиме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 03:39:40 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, Если память не изменяет то нужен Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 06:39:04 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTk, Т.е. Это перед моей функцией апдейта ставить, да? Спасибо попробую! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 11:38:18 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTkViktorWM, Если память не изменяет то нужен Код: java 1. не, думаю это не то.... Т.к. у меня для этой странички в *Edit.Page.xml и так уже стоит <begin-conversation join="true" flush-mode="MANUAL"/> а если ставлю в ява-классе перед вызовом функции вашу @Begin(flushMode=MANUAL) то оно ругается, что нигде не находит тип MANUAL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 11:54:35 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, Тогда видимо я не могу понять что ты хочешь сделать. Опиши подробнее. Желательно с куском кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 11:59:26 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, Вопрос в догонку, ты используешь 2.3 версию или выше-ниже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 12:00:07 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTkViktorWM, Вопрос в догонку, ты используешь 2.3 версию или выше-ниже? версия старенькая у меня - 2.2. Ответ на мой вопрос оказался элементарным: Код: java 1. вот и всё что мне было надо! Но всё же спасибо за участие! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 23:51:16 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWMGregTkViktorWM, Вопрос в догонку, ты используешь 2.3 версию или выше-ниже? версия старенькая у меня - 2.2. Мои соболезнования :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 07:10:47 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
EntityManager.clear() увы, я уже сомневаюсь, что это хорошее решение! Т.к. в случае ошибки (сообщенной из хранимой процедуры!) нужно оставаться в контексте, чтоб дать юзеру возможность подправить введенные данные!!! А при вызове EntityManager.clear() контекст теряется, вестимо... Вообщем, как правильно отключить (одноразово) в этом месте ненавистный hibetnet !? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 04:21:16 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, Ну так можно подробнее, что не работает, пример кода где мешает hibernate? Из твоего описание не понятно что там за компонент и как он управляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 05:54:59 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTk, на .page.xml cтраничке есть "правило": Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. в ява классе вызов моей StoredProc: Код: java 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. так вот нужно чтобы контекст объекта сохранялся (для возможности исправления введеных юзверем данных!!!) даже когда StorProc обламывается! ( т.е. когда возвращается lRes = "error" ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 15:31:12 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, уф... Вообщем не понятно что у тебя происходит. 1. Создаём Conversation context 2. В нём делаем какое-то действие в зависимости от результата этого действия закрываем контекст или держим дальше. В каком месте мешает hibernate? Что показывает debug.seam у нас там закрывается Conversation context или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 17:02:27 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTk, автор2. В нём делаем какое-то действие в зависимости от результата этого действия закрываем контекст или держим дальше. ну дык я бы так и хотел - если б это только так получалось!!! )) вот кнопка делающая update: Код: javascript 1. 2. 3. 4. 5. 6. 7. важнейшим тут является .managed! То есть в состоянии managed функции моего класса, который наследует "extends EntityHome", (я конечно в его исходниках не рылся) вызывают SQL "update mytable set ... where " через hibernet! Что мне мешает, ибо я делаю эту задачу ТОЛЬКО через свой StoredProc! Поэтому я вынужден вызывать в конце моей процедурки this.getEntityManager().clear(); которая похоже сбрасывает флаг/cостояние managed (убивая контекст, как я понял... Но не саму Conversation - debug страничка показывает что она то цела!) ну и кнопка update понятное дело исчезает с формы (managed=false)! Если ты делал проект сгенеренный seam-gen-ом на основе таблиц БД, ты должен меня понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 02:49:07 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
блин! уже сам во всём разобрался! Они похоже чё то там намудрили с этим флагом ".managed" просто ))) Я его в итоге тупо заменил на свою функцию, в которой тупо опрашиваю наличие Id (prim.-key!) обрабатываемого объекта (и >0!). И всё ))) Оказалось, что контекст они вовсе таки не убивают! ))) Вопрос снят, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 03:50:53 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, А перекрыть метод update() не помогло? По идеи managed определяет есть у тебя инстанс в базе или нет. а managed определяется там так: Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 09:49:57 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTkА перекрыть метод update() не помогло? может я конечно ещё не силен в яве, но я так понимал, что если метод в потомке назван так же как и в родителе, то он какбэ уже перекрыт! Или нужен обязательно в seam нотация @Override ? Но в любом случае без "this.getEntityManager().clear()" идет (мешающий!) update от hibernate! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 17:18:32 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, Хм, ты хочешь сказать что ты перекрывал update() и всё равно происходил вызов update таблицы? А ты уверен что при этом вызывался твой метод, а то какая-то магия получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 17:48:55 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
GregTk, в том то и дело что не уверен! То что мой метод update() вызывается - 100%! Но вот откуда берется вызов помимо него(c хибернетом который)?! ведь я не писал в нем ничего похожего на "super.update()"!!! (видимо эта магия кроется унутрях состояния "managed") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 18:47:21 |
|
||
|
вопрос по Jboss SEAM (как подавить хайбернет в конкретном месте)
|
|||
|---|---|---|---|
|
#18+
ViktorWM, Собственно нужно в дебагере смотреть что происходит, само по себе там ничего не должно вызываться. Внутри самого EntityHome и Home ничего нет, единственное что там происходит это создание твоего наследника в Conversation контексте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 20:07:46 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=259&tid=2130542]: |
0ms |
get settings: |
13ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
47ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 299ms |
| total: | 493ms |

| 0 / 0 |
