|
|
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
BlazkowiczpublexuseJack, Да попробовал я это уже все, еще до того как открыть тему. Если указать @GeneratedValue(strategy=GenerationType.IDENTITY), то: Код: sql 1. 2. Это уже интереснее. А SQL лог смотрели? Что за запрос едет? Может это триггер упал? Так это уже другая ошибка. Не может ли быть ошибки при преобразовании Long <=> integer? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 18:55 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
eJackBlazkowiczпропущено... Это уже интереснее. А SQL лог смотрели? Что за запрос едет? Может это триггер упал? Так это уже другая ошибка. Не может ли быть ошибки при преобразовании Long <=> integer? А не может в Oracle пойти что-нибудь типа 1.2341E14 при генерации хэша? Кстати, не очень понятно, как все эти волшебные аннотации должны помочь JPA выполнить insert...returning. Там случайно refresh-политик нет? (хотя, зачем я это спрашиваю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 19:07 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
AlexJmeJackпропущено... Так это уже другая ошибка. Не может ли быть ошибки при преобразовании Long <=> integer? А не может в Oracle пойти что-нибудь типа 1.2341E14 при генерации хэша? Кстати, не очень понятно, как все эти волшебные аннотации должны помочь JPA выполнить insert...returning. Там случайно refresh-политик нет? (хотя, зачем я это спрашиваю) При такой стратегии в оракл вообще нечего пойти не должно - значение Id поля должно быть прочитано после вставки. Дальше ждем лог от автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:36 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
Могу предположить, что стратегия identity для Oracle возвращает поле ROWID, которое, как известно, в RADIX формате, там действительно полно букв. Для полей, заполняемых триггером, учебник рекомендует использовать стратегию select, но для этого нужно какое-то ключевое поле: Код: java 1. 2. 3. 4. 5. 6. 7. Поэтому если нет альтернативного ключа, то ничего не получится. Считаю, что в данному случае разуменее всего использовать GenericGenerator со стратегией sequence, который делает ровно то же самое, что и приведенный код триггера, только на клиенте Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 09:52 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
В первом примере ошибка, конечно же, select а не sequence Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 09:56 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
ivanra, Если бы дело касалось ключей, то я бы так и делал. Но часть логики перенесена на уровень хранимых процедур БД и генерироваться будут не только ключевые поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:00 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
А вот отладочные данные: стектрейсorg.springframework.dao.DataIntegrityViolationException: ORA-01858: вместо ожидаемой цифры обнаружен нецифровой символ ; SQL [n/a]; nested exception is org.hibernate.exception.DataException: ORA-01858: вместо ожидаемой цифры обнаружен нецифровой символ at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:648) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:403) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:163) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy34.save(Unknown Source) at ru.gazprom.skz.lisa.searchengine.data.dao.SearchSessionDAO.save(SearchSessionDAO.java:38) at ru.gazprom.skz.lisa.searchengine.data.dao.SearchSessionDAO$$FastClassByCGLIB$$6058ea3e.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:713) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:646) at ru.gazprom.skz.lisa.searchengine.data.dao.SearchSessionDAO$$EnhancerByCGLIB$$6267dcd7.save(<generated>) at ru.gazprom.skz.lisa.searchengine.data.SearchEngineDataTest.testSearchSessionAndSearchMethodEntities(SearchEngineDataTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.hibernate.exception.DataException: ORA-01858: вместо ожидаемой цифры обнаружен нецифровой символ at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:71) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129) at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) at com.sun.proxy.$Proxy36.executeUpdate(Unknown Source) at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:61) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2936) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3447) at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81) at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362) at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203) at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183) at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167) at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:320) at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287) at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126) at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:843) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:818) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:822) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:865) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) at com.sun.proxy.$Proxy29.persist(Unknown Source) at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:358) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:358) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:343) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155) ... 39 more Caused by: java.sql.SQLDataException: ORA-01858: вместо ожидаемой цифры обнаружен нецифровой символ at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350) at com.jolbox.bonecp.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122) ... 78 more трассировка бдTrace file /ORACLE_DEST/SRV/bdump/diag/rdbms/SRV/SRV/trace/SRV_ora_12165.trc Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /home/ora/app/oracle/product/11.2.0.2 System name: Linux Node name: ORCL.localnet Release: 2.6.32-71.el6.x86_64 Version: #1 SMP Wed Sep 1 01:33:01 EDT 2010 Machine: x86_64 Instance name: SRV Redo thread mounted by this instance: 1 Oracle process number: 41 Unix process pid: 12165, image: oracle@ORCL.localnet *** 2014-01-30 09:34:50.193 *** SESSION ID:(203.30889) 2014-01-30 09:34:50.193 *** CLIENT ID:() 2014-01-30 09:34:50.193 *** SERVICE NAME:(SYS$USERS) 2014-01-30 09:34:50.193 *** MODULE NAME:(JDBC Thin Client) 2014-01-30 09:34:50.193 *** ACTION NAME:() 2014-01-30 09:34:50.193 CLOSE #140559093168072:c=0,e=8,dep=0,type=1,tim=1391060090176669 ===================== PARSING IN CURSOR #140559093141480 len=50 dep=0 uid=220 oct=47 lid=220 tim=1391060090193513 hv=1159991935 ad='e5fd3ab0' sqlid='atrnd612k84mz' begin dbms_utility.get_tz_transitions(:1,:2); end; END OF STMT PARSE #140559093141480:c=0,e=71,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=0,tim=1391060090193511 BINDS #140559093141480: Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000000 frm=01 csi=171 siz=24 off=0 kxsbbbfp=7fd676d2eb28 bln=22 avl=03 flg=05 value=-1 Bind#1 oacdty=23 mxl=32767(32767) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000000 frm=01 csi=171 siz=32767 off=0 kxsbbbfp=7fd676d26728 bln=32767 avl=00 flg=05 EXEC #140559093141480:c=0,e=336,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=0,tim=1391060090193910 ERROR #1:err=6502 tim=1391060090193928 WAIT #140559093141480: nam='SQL*Net break/reset to client' ela= 9 driver id=1952673792 break?=1 p3=0 obj#=-1 tim=1391060090193975 WAIT #140559093141480: nam='SQL*Net break/reset to client' ela= 7780 driver id=1952673792 break?=0 p3=0 obj#=-1 tim=1391060090201770 WAIT #140559093141480: nam='SQL*Net message to client' ela= 1 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1391060090201792 WAIT #140559093141480: nam='SQL*Net message from client' ela= 3319 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1391060090205142 CLOSE #140559093141480:c=0,e=12,dep=0,type=1,tim=1391060090205179 ===================== PARSING IN CURSOR #140559093267640 len=175 dep=0 uid=220 oct=2 lid=220 tim=1391060090205529 hv=3621841296 ad='f5f13348' sqlid='4ccqvz3by1uch' insert into SEARCH_SESSION (SEARCH_FILTER_DATA, SEARCH_FILTER_NAME, START_TIME, STATUS_CODE, STATUS_MESSAGE, STATUS_TIME, USER_NAME) values (:1 , :2 , :3 , :4 , :5 , :6 , :7 ) END OF STMT PARSE #140559093267640:c=0,e=313,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=1391060090205521 ===================== PARSING IN CURSOR #140559093214608 len=42 dep=1 uid=0 oct=3 lid=0 tim=1391060090206726 hv=844002283 ad='e82cbcd0' sqlid='ftj9uawt4wwzb' select condition from cdef$ where rowid=:1 END OF STMT PARSE #140559093214608:c=1000,e=616,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1391060090206725 BINDS #140559093214608: Bind#0 oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0 kxsbbbfp=7fd676d22950 bln=16 avl=16 flg=05 value=00004A08.006B.0001 EXEC #140559093214608:c=1000,e=10879,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=1884964958,tim=1391060090217690 FETCH #140559093214608:c=0,e=57,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,plh=1884964958,tim=1391060090217777 STAT #140559093214608 id=1 cnt=1 pid=0 pos=1 obj=31 op='TABLE ACCESS BY USER ROWID CDEF$ (cr=1 pr=0 pw=0 time=45 us cost=1 size=15 card=1)' CLOSE #140559093214608:c=0,e=2943,dep=1,type=0,tim=1391060090220747 BINDS #140559093267640: Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000010 frm=01 csi=171 siz=152 off=0 kxsbbbfp=7fd676d20568 bln=32 avl=00 flg=05 Bind#1 oacdty=12 mxl=07(49) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000000 frm=01 csi=171 siz=0 off=32 kxsbbbfp=7fd676d20588 bln=07 avl=07 flg=01 value="1/30/2014 0:0:0" Bind#2 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000010 frm=01 csi=171 siz=0 off=40 kxsbbbfp=7fd676d20590 bln=32 avl=00 flg=01 Bind#3 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000010 frm=01 csi=171 siz=0 off=72 kxsbbbfp=7fd676d205b0 bln=32 avl=00 flg=01 Bind#4 oacdty=180 mxl=11(11) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000000 frm=01 csi=171 siz=0 off=104 kxsbbbfp=7fd676d205d0 bln=11 avl=00 flg=01 Bind#5 oacdty=01 mxl=32(08) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000010 frm=01 csi=171 siz=0 off=120 kxsbbbfp=7fd676d205e0 bln=32 avl=08 flg=01 value="TestUser" Bind#6 oacdty=112 mxl=4000(4000) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000000 frm=01 csi=171 siz=4000 off=0 kxsbbbfp=7fd676d2aaf8 bln=4000 avl=00 flg=05 EXEC #140559093267640:c=3000,e=18905,p=0,cr=2,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=1391060090224478 ERROR #1:err=1858 tim=1391060090224504 STAT #140559093267640 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL (cr=0 pr=0 pw=0 time=10 us)' WAIT #140559093267640: nam='SQL*Net break/reset to client' ela= 1 driver id=1952673792 break?=1 p3=0 obj#=-1 tim=1391060090224581 WAIT #140559093267640: nam='SQL*Net break/reset to client' ela= 1776 driver id=1952673792 break?=0 p3=0 obj#=-1 tim=1391060090226371 WAIT #140559093267640: nam='SQL*Net message to client' ela= 1 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1391060090226390 WAIT #140559093267640: nam='SQL*Net message from client' ela= 57688 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1391060090284098 XCTEND rlbk=1, rd_only=1, tim=1391060090284148 WAIT #0: nam='SQL*Net message to client' ela= 1 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1391060090284184 По трассе видно, что он почему то пытается значение TestUser запихнуть в STATUS_TIME, и из-за этого возникает ошибка. класс сущности Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. код используемый для тестирования Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:13 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
Узнаю олдскульную технику ))) Если нет альтернативного ключа, то значение ключа придется все-таки получать при вставке (strategy = "sequence"), а остальные поля, которые заполняются триггером, просто пометить хибернейтовской аннотацией Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:16 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
ivanraУзнаю олдскульную технику ))) Если нет альтернативного ключа, то значение ключа придется все-таки получать при вставке (strategy = "sequence"), а остальные поля, которые заполняются триггером, просто пометить хибернейтовской аннотацией Код: java 1. Спасибо. Такой метод работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:32 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
ivanra, Только еще вопрос: можно ли создать один глобальный SequenceGenerator и использовать его во всех таблицах, т.к. sequence один на всех? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:37 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
publexusiТолько еще вопрос: можно ли создать один глобальный SequenceGenerator и использовать его во всех таблицах, т.к. sequence один на всех? Мне кажется, не получится, так как аннотация для генератора не будет видна из других классов. Кстати, а может достаточно и ключ пометить хибернейтовской аннотацией Код: java 1. и не ссылаться ни на какие генераторы, вдруг заработает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:42 |
|
||
|
JPA - получить значение поля сгенерированное триггером при вставке строки
|
|||
|---|---|---|---|
|
#18+
ivanraКстати, а может достаточно и ключ пометить хибернейтовской аннотацией Код: java 1. и не ссылаться ни на какие генераторы, вдруг заработает? Нет, не катит, ошибка: Код: xml 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 11:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38543041&tid=2127733]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 502ms |

| 0 / 0 |
