|
|
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Решил еревести общение с базой на Hibernate. есть класс Код: 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. Код: xml 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. И еще есь такое Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вылетает ошибка org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister Я уже перетыкал все переменные, но так и немогу понять из-за чего это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 22:46 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, все бы хорошо, но тут форум по мускл. Лично я не хибернил больше десятка лет... Поспрашивайте http://www.sql.ru/forum/java Модератор: Тема перенесена из форума "MySQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 23:50 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
GeronemoВылетает ошибка org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister Я уже перетыкал все переменные, но так и немогу понять из-за чего это. 1) Хотелось бы увидеть стектрейс. 2) Есть подозрение, что Hibernate не понимает XML-аннотации Попробуйте добавить аннотации @Entity, @Id, @Column и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 07:14 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Обычно такая ошибка бывает, когда меппинг не совпадает с классом. Я, например, вижу, что в меппнге объявлено свойство client i d, а в классе - client I d. Этого достаточно, чтобы не взлетело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:50 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
ivanraОбычно такая ошибка бывает, когда меппинг не совпадает с классом. Я, например, вижу, что в меппнге объявлено свойство client i d, а в классе - client I d. Этого достаточно, чтобы не взлетело Да, Вы правы. Я много таких мелочей поправил, эта была последняя, которую не заметил. Все заработало. Теперь у меня 2 вопроса. 1. Как описать в маппинг файле id int(10) auto_increment, который еще к тому же primary key (id) У меня записано так Код: xml 1. 2. 3. 4. 2. Также вопрос по такому моменту. Вот эта строчка занимает довольно много времени Session session = HibernateUtil.createSessionFactory().openSession(); у меня же входящий поток данных от разных источников, где-то 70000 запросов в час, можно ли держать сессию открытой все время, просто делать Код: java 1. 2. 3. А закрывать ее Код: java 1. , когда сервер остнавливается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 11:50 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Действительно, все верно. Не надо каждый раз открывать и закпывать сессию, если мы постоянно обращаемся в БД с однотипными запросами. У меня после открытия 150 сессий вылетало исключение и я сделал такую штуку в своем сервлете Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ntgthm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 19:56 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Я почитал несколько описаний пакета Hibernate и везде увидел вот такую штуку,кроме всего того, что уже сделано 1. Для каждого класса данных, связанных с таблице *.hbm.xml создается DAO интерфейс. 2. Для каждого интерфейса создается его реализация. 3. Создается класс фабрики. Вот я смотрю на все это нагромождение кода и думаю нифига себе. Это какой-то стандарт делать именно так или просто кому-то захотелось ввести, как "правила хорошего тона, чтобы в сложных задачах люди не путались в коде и т. д. и т. п." Потому что у меня есть тупо 3 файла, которые я описал выше. Мой сервлет получает данные в xml ввиде, они парсятся в объект класса Payment И я делаю Код: java 1. 2. 3. 4. Что там еще за геморрой с DAO ? Я не особо понимаю, зачем он мне тут нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 20:27 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, - сессия хибера открывается не долго - проверь - сессию надо открыть в начале серлета и закрыть в конце - доли секунды - каждый сервлет в потоке. Если делать на инициал.сервлета, то будут ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:22 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, для 1 класса пиши как угодно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:27 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo, - сессия хибера открывается не долго - проверь - сессию надо открыть в начале серлета и закрыть в конце - доли секунды Проверим, обязательно Если делать на инициал.сервлета, то будут ошибки А что за ошибки. Я немного погонял (полчаса) с открытой сессией, все как по маслу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 11:13 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, 2 объекта с одинм ID в хибере параллельно из 2-х потоков-сервлетов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 11:34 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
НЕ могу понять, что не так. Хочу сделать Hibernate HQL select запрос с 2-мя условиями, но вылетает ошибка, Код: java 1. 2. 3. 4. org.hibernate.hql.internal.ast.QuerySyntaxException: BufferPaymentTable is not mapped [from BufferPaymentTable BFT where BFT.paymenttype = :paymenttype and BFT.currenttime < :currenttime] У меня есть hbm.xml файл, где BufferPaymentTable связывается с классом Payment (1-е сообщение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 18:09 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, Так надо же намэпленный класс указывать в HQL, а не таблицу в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 23:01 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Локшин МаркGeronemo, Так надо же намэпленный класс указывать в HQL, а не таблицу в базе. ДА, разобрался. К сожалению в инете так слабо с материалом, что много приходится делать методом тыка. Сейчас вот такая проблема появилась. Перевел все общение с БД на Hibernate. Нормально все работает 5 минут. За эо время постпает на сервлет 6000 запросов, все они пишутся в пределах одной сессии во временную базу. И раз в 5 секунд отдельный поток извлекает все записи из этой таблицы и помещает в другую (+ идет обработка не связанная с БД). Судя по логам 5 минут все происходит как надо, а потом начинает вываливаться вот такое авторex org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 16:49 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
В общем, я сделал 2 полярных решения. 1. Открываем и закрываем сессию при каждом обращении к БД. Где-то после 150 запросов при каждом обращение вылетает ex org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect 2.Я открыл сессию в самом начале и не закрываю, пока приложение работает. пара тысяч записей отработали. Местами коряво и данные в БД оказались не такими, как должны. в логе повторяющаяся ошибка ex org.hibernate.TransactionException: nested transactions not supported Т. е. получается. Что так, что так неправильно. Попахивает большим бредом. Потому что, когда у меня не было Hibernate все отлично работало на протяжении нескольких часов и миллиона записей в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 18:10 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Не закрываете соединения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 18:10 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Самое время закончить заниматься самодеятельностью и воспользоваться менеджером соединений - серверным datasource, если это сервер приложений - c3p0 или чем-то подобным в противном случае ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:06 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНе закрываете соединения? Я пробовал закрывать каждое соединение. Также пробовал не закрывать вообще. И так и так вылета.т исключения, просто разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:22 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, давай код в 1 варианте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:35 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo1. Открываем и закрываем сессию при каждом обращении к БД. не при каждом к БД, а в начале и конце сервлета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:36 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
"Меня опять терзают смутные сомнения", что сессии, которую вы создаёте используют одно-единственное подключение. В результате команды из разных потоков перемешиваются со страшной силой, что и приводит к ошибке "недопустимы вложенные транзакции". Вариантов, собственно, два: 1. Как уже сказали - пул подключений; 2. Очередь из java.util.concurrent куда потоки сервлета будут складывать объекты с параметрами запроса, а единственный (отдельный) поток будет их выгребать и отправлять в базу. P.S. Зачем явно стартовать транзакцию для единственного DML-оператора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:38 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo, давай код в 1 варианте Вот такое у меня в doPost сервлета, куда посылается несколько сотен запросов в секунду. Без Hibernate все эти запросы успевали обрабатываться. А здесь висяк уже после 15 Код: java 1. 2. 3. 4. 5. 6. Также есть и другие места, где создаются сессии и закрываются, например. Если лень читать (я это вполне понимаю), то тут каждый 5 секунд происходит некоторая цепочка по по изъятию данных из одной таблицы, записи в другую и передачи их обработчикам. Несколько раз я открываю соединения, после использования сразу же закрываю. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 20:27 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
ivanraСамое время закончить заниматься самодеятельностью и воспользоваться менеджером соединений - серверным datasource, если это сервер приложений - c3p0 или чем-то подобным в противном случае Добавил вот такое в hibernate.cfg.xml <property name="hibernate.c3p0.min_size">10</property> <property name="hibernate.c3p0.max_size">0</property> <property name="hibernate.c3p0.timeout">300</property> <property name="hibernate.c3p0.max_statements">50</property> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 20:30 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
В общем, как только я добавил c3p0 в проект, у меня перестало что-либо писаться в базу вообще. Сейчас я это удалил и пишутся 144 записи, дальше org.hibernate.exception.JDBCConnectionException: Error calling Driver#connecе Методом перебора разных методов, на данный момент лучшим у меня является следующий. 1. никакого c3p0 2. Сервлет, который получает несколько сотен запросов работает с одним открытым соединением 3. Потоки, которые лязят в базу раз в несколько секунд каждый раз открывают и закрывают соединение. Таки образом у меня записалось 7200 записей. Дальше пошли org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 21:22 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo Код: java 1. 2. 3. 4. 5. 6. [/SRC] слона надо есть по частям (с) - вставь после старта транзакции процедуру payment = GetMyPayment(); - вынеси в неё всю лабуду. - убери из кода все потоки и доп обработку таблиц. - запусти нагрузочно на 30 мин просто вставку в БД .... работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 21:26 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo3. Потоки, которые лязят в базу раз в несколько секунд каждый раз открывают и закрывают соединение. вполне возможно обойтись без потоков......? Что они конкретно делают и где стартуют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 21:35 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo Код: java 1. 2. 3. 4. 5. 6. [/SRC] слона надо есть по частям (с) - вставь после старта транзакции процедуру payment = GetMyPayment(); - вынеси в неё всю лабуду. - убери из кода все потоки и доп обработку таблиц. - запусти нагрузочно на 30 мин просто вставку в БД .... работает? Похоже я решил проблему, апгрейднув немного класс HibernateUtil, который создавал sessionFactory и оттуда создавались сессии. Я этот класс нагуглил и тупо вставил. Он имел не совсем законченный вид, но меня это тогда не смутило, т. к. я вообще х. з., что это такое, имею с этим делом первый раз. В общем, было вот так. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Я решил, что метод createSessionFactory можно вызвать и один раз и сделать вот так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Запустил стресс-тест, пока что все норм. Часик посмотрю, что будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 21:49 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, раз уж класс утилитный, то можно побольше кишков туда спрятать Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. 5. 6. 7. - try везде ставь - сдаётся мне, что в коде выше можно одну сессию хибера на весь блок while "протянуть" imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 22:28 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Есть еще один момент, который я упустил, когда переводил всю работу с БД на Hibernate. Код: java 1. 2. 3. 4. Вот тут мне надо бы узнать id новой записи и Timestamp. Метод save класса Session что-то возвращает, вопрос - можно ли из этого что-то вытащить хотя бы id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 00:41 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
GeronemoВот такое у меня в doPost сервлета, куда посылается несколько сотен запросов в секунду. Без Hibernate все эти запросы успевали обрабатываться.Без ORM вы работали с подключением? Лично я ORM не знаю, но, тем не менее, не уверен, что "ORM session" == "JDBC connection"А здесь висяк уже после 15 Код: java 1. 2. 3. 4. 5. 6. Давайте переведём это всё на SQL. ORM, как я уже отмечал, мне неизвестен, но с кочки зрения эрудиции и банальной логики, должно быть: Код: sql 1. 2. 3. 4. "По моему так" (ц) Винни-Пух Возникает вопрос - для чего явно стартовать транзакцию, если достаточно разрешить autocommit и "просто вставлять"? Соответственно, вместо гадания на кофейной гуще путём тасования методов единственного класса, имеет смысл изучить документацию Hibernate на предмет "просто вставки". P.S. Спросив у гугля Hibernate insert получил на третьей позиции Chapter 15. Batch processing , которая начинается с рассмотрения случая очень похожего на ваш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 03:26 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, лучше конечно сначала хоть немного разобраться. От такого перехода с jdbc на hibernate будет только вред, сплошные глюки и тормоза. Вот только несколько фактов из приведенного выше кода: - configuration.configure() действительно нужно делать пореже, лучше всего, 1 раз, так как тут работа с ресурсами, достаточно долгая. - configuration.buildSessionFactory() надо делать еще реже, тут идет составляение словаря, сопоставление меппингов с классами и т.п. Эта операция очень долгая - следует научиться работать с транзакциями, если хочется коммитить на каждый чих, то лучше просто воспользоваться автокоммитом. Лучше, конечно, использовать 1 транзакцию на метод, а еще лучше - на бизнес-транзакцию. При работе с транзакциями в обязательно порядке использовать try finally, учесть, что возможны эксепшены, а значит, нужны и роллбеки. Наконец, отдать управление транзакциями серверу/менеджеру - понять, что сессия хибернейт - это не просто аналог коннекта, а также и локальный кеш данных, позволяющий при правильном использовании работать с базой даже быстрее чем на чистом jdbc. Точно так же, как и с транзакциями, не надо открывать и закрывать сессию на каждый чих - разобраться с коннектами. Что там в конфигурации? Открывать "физический" коннект на каждый чих тоже большая роскошь. Читать про пулы и их конфигурирование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 10:27 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
GeronemoВот тут мне надо бы узнать id новой записи и Timestamp. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 10:39 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123GeronemoВот тут мне надо бы узнать id новой записи и Timestamp. Код: java 1. 2. Спасибо, это работает. Но есть один очень грустный момент. При перезапуске сервера (Tomcat 7.0) session.save(myclass); начинает генерить id сначала. А мне нужно, чтобы БД как-то запоминало последний id. хм... А я в другом потоке вытаскиваю все записи из этой таблицы (BufferPaymentTable) и помещаю в другую (OperationPaymentTable). Т. е. обнаружилась сложность, как мне писать id так, чтобы при перезапуске сервера нумерация продолжалась с того момента, где закончилась в предыдущий раз. Вариант решения. Каждый раз при инициализации сервера я могу слазить в БД, в эту другую таблицу (OperationPaymentTable) и посмотреть максимальный id там. Потом как-то сообщить БД, чтобы session.save(myclass); продолжало с id+1 (а оно пишет в BufferPaymentTable). Или же есть какой-то способ попроще. Кстати, все еще открыт вопрос, про то, как мне получать текущеее время записи полученных данных. Потому как myclass = (MyСlass) session.get(MyСlass.class, myclass.getId()); получает id, а мне еще нужно и currenttime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP. Неужели делать еще один запрос в БД, т. е. всего их будет 3 ? (1 - запись, 2-й прочитали id, 3-й по этому id прочитали currenttime) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 14:31 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
И еще вопрос. Посоветуйте книгу/руководство по SQL. Ищу сейчас работу java-программера, везде где был надо знать SQL на более-менее приличном уровне (а не моем - сделать insert, update и delete). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 14:33 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, почему сразу при приходе объекта его не записать и не обработать? Зачем 5 сек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 14:43 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemoначинает генерить id сначала ))) прикольно. Измени маппинг Id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 14:51 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemoтекущеее время записи полученных данных. myclass.geXXXXXXX()) не работает? .... Если обрабатывать сразу, то время вообще не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 14:53 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo, почему сразу при приходе объекта его не записать и не обработать? Зачем 5 сек? Таковы требования к системе. Вкратце. Есть около несколько десятеов тыс. клиентов, которые формируют в среднем несколько сотен запросов в секунду. Обработка каждого запроса зависит от внешних серверов, которые нам неподвластны. Поэтому все входящие запросы пишутся в буферную таблицу. Тут наше дело просто зарегистрировать запрос. Вы обращали внимание, что в сервисах приема платежей, в интернет-банках, когда вы отправляете запрос на платеж, то обычно вам дается ответ ввиде "Платеж принят на обработку id=xxxxxxx", а не ввиде "ваш платеж успешно исполнен". Я пишу именно такую систему. Сначала все запросы становятся в очередь (помещаются в буферную таблицу). Далее другое приложение (возможно установленное на другом физ. сервере) забирает порциями эти запросы в другую таблицу, передает данные обработчику, который связывается с удаленным сервером некого оператора услуг, получает ответ и пишет его в базу. Давайте тему этих взаимодействий не будем обсуждать. Это ТЗ. Мое дело реализовать это наиболее быстрым и надежным способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 19:28 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
GeronemoДавайте тему этих взаимодействий не будем обсуждать. Это ТЗ. Мое дело реализовать это наиболее быстрым и надежным способом. А мы хотим обсуждать. Может мы тебе JMS присоветуем. А тебя за инициативу нагрядят. Или побъют. Впрочем это неважно. Главное чтоб форум был интересен а не решал чьи-то меркантильные задачки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 19:34 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
maytonGeronemoДавайте тему этих взаимодействий не будем обсуждать. Это ТЗ. Мое дело реализовать это наиболее быстрым и надежным способом. А мы хотим обсуждать. Может мы тебе JMS присоветуем. А тебя за инициативу нагрядят. Или побъют. Впрочем это неважно. Главное чтоб форум был интересен а не решал чьи-то меркантильные задачки. Ну можно и пообсуждать, я непротив выслушать интересные мысли. Почему у меня организовано именно так, я изложил выше. Если каждому входящему запросу (а их несколько сотен) дать ресурсы на немедленную полную обработку, то все повиснет из-за того,что они будут ломиться по одному на связь со внешними серверами. А так мы можем их как-то выстроить в очередь, некоторые запросы скомпоновать и передать в одном пакете несколько запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 19:56 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
maytonнагрядят. Или побъют.Впрочем это неважно. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 19:59 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemoвыстроить в очередь очередь какая то странная - "while" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 20:01 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemoвыстроить в очередь очередь какая то странная - "while" Задумывалась как временная конструкция. Но, очень хорошо работает, т. ч. надо будет еще голову поломать, чем это заменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 20:47 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemoтекущеее время записи полученных данных. myclass.geXXXXXXX()) не работает? .... Если обрабатывать сразу, то время вообще не нужно. Там дело не в маппинге, а втом, что эта таблица постоянно очищается. И если перезапустить Сервер, то движок Hibernate забудет, что в этой таблице когда-то присутствовали данные. Если честно, то, когда у меня работа с БД была через jdbc, тогда вероятно была та же самая ошибка, но я ее не заметил. В общем, я х. з., нужен совет по этой теме. Сейчас у меня в маппинг-файле написано такое Код: xml 1. 2. 3. 4. Я сделал небольшой метод в классе Hibernate Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. И он работает. В процессе инициализации сервера я вызываю эту функцию. Только вот остался вопрос, как заставить BufferPaymentTable назначать id не с 1, а с этого полученного мною значения. Пробовал payment.setId(startId); session.save(payment); Но не работает, все равно id пишет с еденицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 22:03 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, что за бред? Если инкремент не твой доморощенный, а самой СУБД, то она его никогда не забудет)). Даже оракл в своей 12-ой версии всё таки ввел такое поле) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 22:12 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo, что за бред? Если инкремент не твой доморощенный, а самой СУБД, то она его никогда не забудет)). Даже оракл в своей 12-ой версии всё таки ввел такое поле) <class name="Payment" table="BufferPaymentTable"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class=" increment " /> </id> Вот при таком маппинге СУБД забывает инкремент и при перезапуске Томката начинает с id=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 22:33 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, ложись спать. Я уже сказал - измени маппинг. Я твой маппинг видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 22:37 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, конструкция getNextId() не гарантирует уникальных идентификаторов, если только её вызов не сериализован. Если очень хочется получить управляемый счетчик, то лучше завести для него специальную таблицу и использовать встроенный table-generator (@TableGenerator) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 23:01 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo, ложись спать. Я уже сказал - измени маппинг. Я твой маппинг видел. Неплохо бы подсказочку тут. Методом тыка убивается слишком много времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 00:17 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, Код: java 1. только непонятно, почему у тебя JPA а не аннотации хибера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 08:10 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemo, Код: java 1. только непонятно, почему у тебя JPA а не аннотации хибера Потому что я пока только учусь (c) Я был программером, потом на некоторое время ушел в другую отрасль, показалось тогда сильно перспективнее. Но вся перспектива там закончилась и я хочу вернуться. Я ищу работу и мне данное задание дали как тестовое. Потом на вакантное место взяли какого-то студента за копейки и я стал продолжать его делать и наворачивать по своему усмотрению. Когда гуглил Hiberbate, мне подобная реализация попала на глаза раньше, чем с аннотациями. Поэтому я решил делать именно так. Кстати, IDENTITY работает, Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 11:54 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
В моем новом проекте я решил использовать ORM с помощью аннотаций, а не xml файлов Вылетает вот такая ошибка org.hibernate.TypeMismatchException: Provided id of the wrong type for class DB.UserInfo. Expected: class java.lang.Integer, got class java.lang.String я уже перебрал несколько различных аннотаций к id, но все одно и то же Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. В базе MySQL таблица выглядит так Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 15:26 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Не понятно почему в ошибке вылез String. Где-то вы нас обманываете. Для id рекомендуется использовать тип обертку (Long, Integer), чтобы ORM мог отличить новые объекты (id == null) от уже сохраненных. Если остро нужен примитив, то можно попробовать указать unsaved-value. Не знаю позволяют ли это аннотации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 15:33 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНе понятно почему в ошибке вылез String. Где-то вы нас обманываете. Для id рекомендуется использовать тип обертку (Long, Integer), чтобы ORM мог отличить новые объекты (id == null) от уже сохраненных. Если остро нужен примитив, то можно попробовать указать unsaved-value. Не знаю позволяют ли это аннотации. Да, ошибка не тут. Потому каак стало вылетать вот такое org.hibernate.hql.internal.ast.QuerySyntaxException: Users is not mapped [from Users where login = : login] когда я подправил запросик Код: java 1. 2. 3. 4. 5. В Hibernate.cfg.xml вот такая строчка <mapping class="DB.UserInfo" /> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:03 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
В запросе должно быть название сущности. Users это всего лишь таблица для мапинга её. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:16 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
блин, уже раз пятый пишу Users - имя таблицы UserInfo - имя сущности HQL, JPQL, Criteria API оперируют сущностями и свойствами SQL оперирует таблицами и колонками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:18 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
GeronemoДа, ошибка не тут. Потому каак стало вылетать вот такое org.hibernate.hql.internal.ast.QuerySyntaxException: Users is not mapped [from Users where login = : login] Вам с Елдосом дружить надо. Он тоже сначала на форуме спрашивает, а потом пишет что его ответ не интересует так как ошибка в другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:19 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Вот блин, столько времени впустую потратил. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:24 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Народ, я опять запутался. Нид хелп. есть сущность Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. и вот такая попытка достать всех авторов, удовлетворяющих требованиям. Получаю 0 авторов, хотя я делаю копипаст всех параметров и автор точно должен быть 1. Код: 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. также попытался переделать немного по-другому и вылетает исключение org.hibernate.QueryParameterException: could not locate named parameter [firstName] Код: 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. В будущем мне тут надо бы еще как-то сделать так, чтобы можно было искать авторов по 1 или 2-м полям, а также по частичным совпадениям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 22:30 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Вот такое работает Код: java 1. 2. теперь надо бы придумать так, чтобы GeronemoВ будущем мне тут надо бы еще как-то сделать так, чтобы можно было искать авторов по 1 или 2-м полям, а также по частичным совпадениям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 22:53 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Geronemo, сам себя цитируешь? Признак гения наверное... Чтобы искать по 1-2 м полям нужно написать 1-2 текста предложеня "WHERE ". Как написать это уже другой вопрос я так ду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2014, 13:01 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Небольшая проблемка нарисовалась. Есть вот такая сущность @Entity @Table(name="Book") public class BookInfo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id") private int id; @Column(name="authorId") private int authorId; @Column(name="bookName") private String bookName; @Column(name="numberOfBooks") private int numberOfBooks; @Column(name="currentNumberOfBooks") private int currentNumberOfBooks; Setters and Getters XXXXXXXXXXXXXX } У каждой книги есть автор и мне было бы очень удобно вместо XXXXXXXX вставить объект класса автор (когда я решу, что у книги может быть несколько авторов, я поменяю этот на List). Проблема в том, что, когда у меня прописан объект XXXXXXX, то вылетает исключение org.hibernate.exception.SQLGrammarException: could not extract ResultSet Если XXXXXX удалить, то все нормально работает. Но, тогда мне где-то в другом месте надо довольно сильно нагромоздить кода и несколько лишних раз слазить в БД. Я бы хотел данные об авторе хранить здесь, это было бы самым элегантным решением. Вопрос, возможно ли это. Может существует какая-то аннотация, которая новому объекту в этом классе не будет пытаться найти соответствие в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 18:06 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
GeronemoМожет существует какая-то аннотация, которая новому объекту в этом классе не будет пытаться найти соответствие в базе. При чем тут объекты? Речь о структуре сущности - классах и свойствах, а не объектах. Свойство можно пометить как @Transient, чтобы хибернейт его игнорировал. Только почему просто не замапить @ManyToMany мне не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 09:38 |
|
||
|
org.hibernate.MappingException: Java Hibernate
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Только почему просто не замапить @ManyToMany мне не понятно. Вкратце ответ прост - я до этого пока не дорос. На данный момент у меня происходит вот такая штука. Я пишу thin-client приложение для обслуживания библиотеки (выдать книгу, вернуть книгу, зарегистрировать нового читателя и т. д.) используя Glassfish 4, JSF framework, MySQL. Начинаю с малого, т. к. с Glassfish 4, JSF framework я раньше не работал. Сейчасу меня работает несколько функций, типа логина в систему и Поиска книги по параметрам автора и названия произведения. В итоге я имею ArrayList <Book> в хhtml вот таким образом я отображаю названия произведений. <ui:repeat var="item" value="#{findBookProcess.listOfBooks}"> <h1>#{item.bookName}</h1> </ui:repeat> и мне было бы очень удобно, чтобы в item (элемент ArrayList класса Book) содержал в себе в том числе и инфу об авторе. Но Book это есть @Entity @Table(name="Book") и при добавлении туда полей вылетает ошибка orh.Hibernate.... Я сейчас сделал так - завел второй массив ArrayList <Writer> и в нем каждому i-му автору соответствует i-й элемент из Book И осталось только придумать, как это выводить ввиде таблицы 2xN (N - длина массива) в xhtml файл. Ну а @ManyToMany усложняет все. И БД надо немного переделывать и х. з., как потом это выводить, я думал сделать это позже. Хотя сейчас подумываю, а не сделать ли мне это сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 14:26 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2126566]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 525ms |

| 0 / 0 |
