Hibernate 映射问题 Tomcat8
Hibernate Mapping Issue Tomcat8
我在休眠和 tomcat 8 中遇到映射问题。
当我部署应用程序时(通过 manager/html 或创建一个新文件夹并放置整个项目)没有问题但是如果我尝试将 类 放入另一个的 WEB-INF现有应用程序和 运行 它,日志显示:
org.hibernate.hql.internal.ast.QuerySyntaxException: Telefonos is not mapped [FROM Telefonos where canal = :canal and (fechaTomado is null or (fechaTomado + 90) >= getdate())]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
at operaciones.telefonoscvts.ManejadorTelefonos.listTelefonos(ManejadorTelefonos.java:133)
at org.apache.jsp.comercial.comercial.ajax.traeNumero_jsp._jspService(traeNumero_jsp.java:123)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Telefonos is not mapped
Teléfonos 实体
package operaciones.telefonoscvts.dao;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "telefonos_cvts")
public class Telefonos implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "telefono")
private String telefono;
@Column(name = "modalidad")
private String modalidad;
@Column(name = "canal")
private String canal;
@Column(name = "fechaCarga")
private String fechaCarga;
@Column(name = "fechaTomado")
private String fechaTomado;
public Telefonos() {
}
//get and set methods
我尝试了很多方法让它工作,包很好,hibernate.cfg.xml它已经读过了,我不知道为什么应用程序会丢失它的映射。感谢 Anny 的帮助。
休眠:4.3
谢谢!!
我看到你的映射是正确的。最可能的解决方案是检查您是否已将实体包含到 Hibernate 配置中:
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
lsfb.setDataSource(this.dataSource());
lsfb.setPackagesToScan(new String[] {
"operaciones.telefonoscvts.dao"
});
lsfb.setHibernateProperties(this.hibernateProperties());
return sessionFactory;
}
您可以使用基于 xml 的配置实现相同的效果。但是我发现在这种情况下注释更好。
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan">
<list>
<value>operaciones.telefonoscvts.dao</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql:false}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql:false}</prop>
</props>
</property>
</bean>
来源:Websystique
此外,我建议您将文件 Telefonos.java
与负责与数据库通信的 类 分开添加到包 operaciones.telefonoscvts.entity
(或 model
)中。
我在休眠和 tomcat 8 中遇到映射问题。
当我部署应用程序时(通过 manager/html 或创建一个新文件夹并放置整个项目)没有问题但是如果我尝试将 类 放入另一个的 WEB-INF现有应用程序和 运行 它,日志显示:
org.hibernate.hql.internal.ast.QuerySyntaxException: Telefonos is not mapped [FROM Telefonos where canal = :canal and (fechaTomado is null or (fechaTomado + 90) >= getdate())]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
at operaciones.telefonoscvts.ManejadorTelefonos.listTelefonos(ManejadorTelefonos.java:133)
at org.apache.jsp.comercial.comercial.ajax.traeNumero_jsp._jspService(traeNumero_jsp.java:123)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Telefonos is not mapped
Teléfonos 实体
package operaciones.telefonoscvts.dao;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "telefonos_cvts")
public class Telefonos implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "telefono")
private String telefono;
@Column(name = "modalidad")
private String modalidad;
@Column(name = "canal")
private String canal;
@Column(name = "fechaCarga")
private String fechaCarga;
@Column(name = "fechaTomado")
private String fechaTomado;
public Telefonos() {
}
//get and set methods
我尝试了很多方法让它工作,包很好,hibernate.cfg.xml它已经读过了,我不知道为什么应用程序会丢失它的映射。感谢 Anny 的帮助。
休眠:4.3
谢谢!!
我看到你的映射是正确的。最可能的解决方案是检查您是否已将实体包含到 Hibernate 配置中:
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
lsfb.setDataSource(this.dataSource());
lsfb.setPackagesToScan(new String[] {
"operaciones.telefonoscvts.dao"
});
lsfb.setHibernateProperties(this.hibernateProperties());
return sessionFactory;
}
您可以使用基于 xml 的配置实现相同的效果。但是我发现在这种情况下注释更好。
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan">
<list>
<value>operaciones.telefonoscvts.dao</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql:false}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql:false}</prop>
</props>
</property>
</bean>
来源:Websystique
此外,我建议您将文件 Telefonos.java
与负责与数据库通信的 类 分开添加到包 operaciones.telefonoscvts.entity
(或 model
)中。