|
|
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
Таблица в БД Postgres 9.1.13 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Класс сущности Код: 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. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. Сеансовый компонент Код: 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. Сервлет, в котором пытаюсь сделать вставку записи Код: 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. Выходит ошибка при вставке null в поля типа Date, хотя запрета на это нет. Что не так делаю? Ошибка: Call: INSERT INTO ac_container (d_control, d_fabric, d_from, d_to, mass_fact, mass_passp, reg_number, ser_number, volume_passp, manufacture_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [10 parameters bound] Query: InsertObjectQuery(entity.spr.AcContainer[ id=null ]) at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.processExceptionForCommError(DatabaseAccessor.java:1605) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:893) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:957) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:630) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558) at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1995) at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:296) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:377) at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:165) at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:180) at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:485) at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80) at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90) at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:300) at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899) at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:798) at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108) at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2894) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1797) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1779) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1730) at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:226) at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:125) at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:4200) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1439) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1585) at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:452) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:846) ... 63 more Caused by: org.postgresql.util.PSQLException: ERROR: column "d_from" is of type date but expression is of type character varying Подсказка: You will need to rewrite or cast the expression. Позиция: 155 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2101) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1834) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:332) at com.sun.gjc.spi.base.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:125) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:885) ... 93 more ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 07:30 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
Вариант через createNativeQuery работает нормально, но при указании типов полей date и integer. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. С mysql таких проблем не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 07:33 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
непонятно какие данные отправляет eclipselink на сервер в раздел properties файла persistence.xml включите следующие опции Код: xml 1. 2. 3. и смотрите что eclipselink передает, если все правильно значит драйвер смотреть надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 07:44 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
bochkov,я вставила эти строки в persistence.xml и все заработало. Огромное спасибо. Я так пониманию первые две строки отвечают за протоколирование. Получается секрет успеха в 3 строке <property name="eclipselink.jdbc.bind-parameters" value="false"/>. Подскажите,что эо за параметр??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 08:29 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
это плохо что работает только с этим параметром, он говорит jpa чтоб тот не использовал привязку параметров в запросе, очень сказывается на производительности, в обычном режиме sql preparedstatement сперва компилируется с возможностью подмены параметров перед вызовом, очень выгодно исполнять одинаковые запросы с разными входящими данными, теперь же каждый вызов sql компилируется заново, очень медленно получается, надо смотреть какие всетаки параметры уходят в запрос отключите bind и запустите, надо искать ошибку, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 08:45 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
bochkov, Лог: CONFIG: Connected: jdbc:postgresql://localhost:5432/container?loginTimeout=0&socketTimeout=0&prepareThreshold=5&unknownLength=2147483647&loglevel=0&tcpkeepalive=false User: ceh16 Database: PostgreSQL Version: 9.1.13 Driver: PostgreSQL Native Driver Version: PostgreSQL 9.1 JDBC3g (build 903) Call: INSERT INTO ac_container (d_control, d_fabric, d_from, d_to, mass_fact, mass_passp, reg_number, ser_number, volume_passp, manufacture_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [null, null, null, null, null, null, null, 3333, null, 3] И та же ошибка Caused by: org.postgresql.util.PSQLException: ERROR: column "d_control" is of type date but expression is of type character varying ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 08:53 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
Возможно проблема в приведении типов при вставки ведь скажем поле ser_number типа текст, а в параметрах bind, кавычек нет??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 10:37 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
похоже что проблема в драйвере, что то не то передает серверу поможет посмотреть loglevel=2 в параметрах соединения может версию драйвера поменять может еще какие нибудь параметры соединения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 10:37 |
|
||
|
JPA+postgres не вставлются null в поле date
|
|||
|---|---|---|---|
|
#18+
установила loglevel=2 в логе INFO: 14:28:07.526 (1) <=BE ReadyForQuery(I) FINE: INSERT INTO ac_container (d_control, d_fabric, d_from, d_to, mass_fact, mass_passp, reg_number, ser_number, volume_passp, manufacture_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [null, null, null, null, null, null, null, 3333, null, 3] INFO: 14:28:07.550 (1) simple execute, handler=org.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandler@7a9e872, maxRows=0, fetchSize=0, flags=5 INFO: 14:28:07.551 (1) FE=> Parse(stmt=S_1,query="BEGIN",oids={}) INFO: 14:28:07.552 (1) FE=> Bind(stmt=S_1,portal=null) INFO: 14:28:07.552 (1) FE=> Execute(portal=null,limit=0) INFO: 14:28:07.554 (1) FE=> Parse(stmt=null,query="INSERT INTO ac_container (d_control, d_fabric, d_from, d_to, mass_fact, mass_passp, reg_number, ser_number, volume_passp, manufacture_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",oids={1043,1043,1043,1043,23,23,1043,1043,23,23}) INFO: 14:28:07.555 (1) FE=> Bind(stmt=null,portal=null,$1=<NULL>,$2=<NULL>,$3=<NULL>,$4=<NULL>,$5=<NULL>,$6=<NULL>,$7=<NULL>,$8=<'3333'>,$9=<NULL>,$10=<3>) INFO: 14:28:07.556 (1) FE=> Describe(portal=null) INFO: 14:28:07.557 (1) FE=> Execute(portal=null,limit=1) INFO: 14:28:07.558 (1) FE=> Sync INFO: 14:28:07.559 (1) <=BE ParseComplete [S_1] INFO: 14:28:07.559 (1) <=BE BindComplete [null] INFO: 14:28:07.560 (1) <=BE CommandStatus(BEGIN) INFO: 14:28:07.567 (1) <=BE ErrorMessage(ERROR: column "d_control" is of type date but expression is of type character varying Подсказка: You will need to rewrite or cast the expression. Позиция: 147) INFO: org.postgresql.util.PSQLException: ERROR: column "d_control" is of type date but expression is of type character varying Подсказка: You will need to rewrite or cast the expression. Позиция: 147 Посмотрела http://jdbc.postgresql.org/download.html для моей версии postgres 9.1 и jdk 1.7 графа пустая...Попробовала разные версии драйвером, ничего не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38632863&tid=2127230]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
214ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 581ms |

| 0 / 0 |
