|
|
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы http://img607.imageshack.us/img607/2106/bbnnn.png если получаю два объекта с формы не изменённые либо частично измененные то сохранятся нормально. Но если я изменю значение email (что является связывающим эти две таблицы) то получаю авторorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [update ACCOUNT set login=?, password=? where id=?]; constraint [USER2.PATIENT_LOGIN_FK1]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update Вот так я делаю обновление 1. Код: java 1. 2. 2. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 3. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 4. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 15:49:51 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Вроде как в моём случае транзакции будут "по принципу матрёшки". Т.е. @Transactional register | v @Transactional saveOrUpdate(Account account), saveOrUpdate(Patient patient) т.е. на одна тракзакция идёт на обе saveOrUpdate операции и две подчиняются первой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 16:31:32 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Понятие иерархии тут есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 16:32:13 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Обычно правильным проектпированием считается ставить аннотации @Transactional только на методах самого верхнего уровня(так называемые входные точки сценариев, или бизнес-транзакций) Вообще сушествует то ли 6 то ли 7 типов атрибутов у аннотации @Transactional(лень искать точное количество), так вот на входных точках вешают @Transactional(Required) - при таком раскладе на каждый вызов бизнес-транзакции будет создаваться или если она уже создана, то будет переиспользоваться. Все остальные методы, которые вызываются из главного либо вообще не должны иметь аннтоаций, либо должны иметь @Transactional(Support) Есть конечно исключения, все зависит от логики - иногда для быстродействия могут убираться транзакции на чтение, или наоборот есть требование чтобы все вызовы обязательно были под транзакцией - тогда используют @Transactional(Mandatory) В общем рекомендую цикл статей Майка Ричардса - очень многое проясняет - http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=transaction+strategies: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:21:52 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Убрал у остальных Повесил так Код: java 1. 2. 3. 4. 5. 6. но получаю опять авторorg.springframework.dao.DataIntegrityViolationException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:40:51 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Вот так у меня описан transaction manager Код: java 1. 2. 3. 4. 5. 6. 7. всё вроде нормально запускается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:45:22 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
ccoder, А как замаплены классы Patient, Account? Одно из требований которого я придерживаюсь при выборе ключа, это то что значение ключа никогда не меняется. По мне email очень неудачный вариант ключа, а почему не ссылаться по суррогатному ключу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:49:21 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Замапены аннотацией @Entity ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:54:08 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Но ведь с простым sql это сделать возможно, а так как hibernate в конечном этоге делает sql то должно получится. Скорей всего делается commit после Код: java 1. и поэтому error ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:56:22 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
ccoder, Связь между Patient и Account есть? И как она замаплена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:57:11 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
С account Код: java 1. 2. 3. С patient Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 17:58:28 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
По мне email очень неудачный вариант ключа, а почему не ссылаться по суррогатному ключу? +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 18:12:39 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
ccoder, За обоими концами этого отношения правильно следишь? Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 18:13:30 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Но всёравно (это относится к плохо спроектированной базе данных) как сделать такую транзакцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 18:15:14 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
vas0ccoder, За обоими концами этого отношения правильно следишь? Код: java 1. 2. Я сейчас только что проверил, а там в принципе мне нужно следить. Так как я отдаю их форму и из формы получаю только account.email другим. Объекты с @SessionAttribute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 18:23:05 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Сейчас только Код: java 1. есть, но по прежнему ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 18:24:37 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
vas0ccoder, За обоими концами этого отношения правильно следишь? Код: java 1. 2. А с этим кодом авторorg.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: lt.webmedia.eHealth.domain.Account.patients, no session or session was closed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 18:27:15 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Как вообще отслеживать транзакции? (использую oracle db) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 19:09:19 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
и какие строки hibernate пытается выполнить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 19:11:35 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
ну транзакция вроде как сама работает (т.е. не сразу всё обновляется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 20:04:43 |
|
||
|
Вопрос по транзакции
|
|||
|---|---|---|---|
|
#18+
Petro123 По мне email очень неудачный вариант ключа, а почему не ссылаться по суррогатному ключу? +1 Вы правы. СПАСИБО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 21:06:58 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37755924&tid=2132026]: |
0ms |
get settings: |
15ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
37ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 334ms |
| total: | 516ms |

| 0 / 0 |
