Hibernate Mapping новые столбцы, вызывающие сбой входа - PullRequest
0 голосов
/ 07 сентября 2018

Я унаследовал распорки и приложение гибернации.Нам нужно было изменить таблицу, чтобы включить некоторые дополнительные столбцы.Я запустил скрипт alter Table, чтобы добавить столбцы вручную.Я добавил дополнительные свойства столбца в свой java-файл модели, а также в hbm-файл hibermate.

Однако, когда я компилирую и запускаю приложение, оно запускается просто отлично.Но я получаю сообщение об ошибке при входе в приложение.

Если я удаляю теги свойств из hbm, я могу войти без проблем.Когда новые теги свойств присутствуют в hbm, происходит сбой при входе в систему.Что мне здесь не хватает?Я пытался перекомпилировать приложение, но, похоже, оно не дает никакого эффекта.

РЕДАКТИРОВАТЬ Это единственная трассировка стека, которую я получаю, которая выводится на мой экран не в tomcat или любых других регистраторах, настроенных для приложения.

javax.servlet.jsp.JspException: Define tag cannot set a null value
at org.apache.struts.taglib.bean.DefineTag.doEndTag(DefineTag.java:236)
at org.apache.jsp.pages.v2.Main_jsp._jspService(Main_jsp.java:391)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at controller.LoginServlet.doPost(LoginServlet.java:233)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.bureaueye.beacon.filter.PerformanceLogFilter.doFilter(PerformanceLogFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
at java.lang.Thread.run(Thread.java:662)

Я немного покопался и обнаружил, что я использую hibernate 3, и что в моем файле hiberbate.cfg.xml у меня не было этого свойства в моей конфигурации, однако, добавление его не похоже начто-то изменило.

<property name="hibernate.hbm2ddl.auto">validate</property>

Я также нахожу каталог .hibernateSynchronizer3, но не уверен, что это как-то влияет.

1 Ответ

0 голосов
/ 19 октября 2018

Унаследовав проект, я пытался следовать соглашениям, которые я видел ранее установленными в проекте. Комментарии в классе, которым сопоставляются новые свойства, указывают на то, что файл не следует изменять вручную, поскольку он будет потерян из-за любых изменений в файлах сопоставления.
Это предупреждение будет иметь смысл, если <property name="hibernate.hbm2ddl.auto">validate</property> был на самом деле настроен и работает правильно. Это добавило бы эти новые свойства соответственно. Однако эти автоматические изменения не просто произошли. Поэтому я попытался вручную добавить методы получения / установки в соответствии с соглашениями, которые были в этом файле класса. Приложение запустится, хотя и не сможет установить соединение с пулом данных. Эти исключения были пойманы и не подвергались регистраторам. После размещения точек останова в различных файлах я, наконец, обнаружил, что написанные мной методы getter и setter не были названы так, как их ожидал hibernate. После изменения имен методов в соответствии с ожиданиями Hibernate я смог запустить приложение и успешно войти в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...