- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个项目设置,我正在尝试使用 JPA 和 Hibernate 作为提供程序来将数据存储在我的本地 h2 数据库中。它全部配置为我的 spring 项目的一部分,我使用 tomcat 作为我的服务器。现在,在过去一周左右的时间里,我一直在为这个阻止我的应用程序成功运行的基本问题而烦恼。这就是应用程序与我的数据库进行通信的能力。最初我将 hibernate 属性 hbm2ddl 设置为创建更新。使用此配置,虽然应用程序启动成功,但没有数据被持久化到本地 H2 数据库。但是这里需要注意的一点是,数据是持久化在JVM内部的。所以我能够检索存储的内容。请注意,尽管我没有在内存模式下运行 h2 数据库,但还是发生了这种情况。现在经过一些研究我意识到,我应该将 hbm2ddl 属性设置为验证,因为我已经在使用 H2 控制台单独创建数据库模式。但是这里是我得到这个缺少表的 hibernate 异常的地方。我通过调试我正在使用的第 3 方 hibernate 、c3p0 和 h2 jar 进行了一些挖掘,但我真的碰壁了。我实际上可以看到 H2 驱动程序 jar 中的 JdbcDatabaseMetaData 类创建了一个准备好的语句,但是当执行该语句时,它返回空结果集。好吧,为了检查是否存在任何与连接或查询相关的问题,我采用了那个确切的查询并通过使用简单 H2 Jdbc 连接的独立程序执行了它。令人惊讶的是,我能够检索到导致“Missing Table” hibernate 异常的确切数据。
有谁知道这个东西是为什么引起的?驱动程序工作正常,我假设 hibernate 与它无关。这让我怀疑 tomcat 有什么东西阻止了与数据库的通信。在这一点上的任何评论、提示和提示将不胜感激。
下面是一些基本配置。
持久化配置
<!-- datasource -->
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!-- DB connection properties -->
<property name="driverClass" value="org.h2.Driver" />
<property name="jdbcUrl" value="${db.url}" />
<property name="user" value="${db.user:}" />
<property name="password" value="${db.password:}" />
<!-- Pool sizing properties -->
<property name="initialPoolSize" value="${db.pool.initialSize:5}" />
<property name="maxPoolSize" value="${db.pool.maxSize:25}" />
<property name="minPoolSize" value="${db.pool.minSize:0}" />
<property name="maxStatements" value="${db.pool.maxStatements:10}" />
<!-- Connection testing and acquisition properties -->
<property name="maxIdleTime" value="300" />
<property name="idleConnectionTestPeriod" value="${db.con.testPeriod:30}" />
<property name="preferredTestQuery" value="${db.con.testQuery:select 1 from dual}" />
<property name="acquireIncrement" value="${db.con.acquireIncrement:5}" />
<property name="acquireRetryAttempts" value="${db.con.retryAttempts:0}" />
<property name="acquireRetryDelay" value="${db.con.retryDelay:3000}" />
<!-- JMX name -->
<property name="dataSourceName" value="Datasource" />
<!-- Debugging options -->
<property name="unreturnedConnectionTimeout" value="${db.con.unreturnedTimeout:0}" />
<property name="debugUnreturnedConnectionStackTraces" value="${db.con.debugUnreturned:false}" />
</bean>
<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="datasource"/>
<property name="packagesToScan" value="com.omni" />
<property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence"/>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${db.hib.dialect}</prop>
<!-- <prop key="hibernate.default_schema">${db.hib.schema:SVC_APP}</prop> -->
<prop key="hibernate.id.new_generator_mappings">true</prop>
<prop key="hibernate.jdbc.batch_versioned_data">true</prop>
<prop key="hibernate.connection.isolation">${db.hib.isolationLevel:4}</prop>
<prop key="hibernate.jdbc.fetch_size">${db.hib.fetchSize:50}</prop>
<prop key="hibernate.max_fetch_depth">${db.hib.maxFetchDepth:3}</prop>
<prop key="hibernate.default_batch_fetch_size">${db.hib.defBatchSize:8}</prop>
<prop key="hibernate.hbm2ddl.auto">${db.hib.ddl:none}</prop>
<prop key="hibernate.generate_statistics">${db.hib.genStats:true}</prop>
<prop key="hibernate.format_sql">${db.hib.formatSql:false}</prop>
<prop key="hibernate.ejb.interceptor">com.omni.core.support.hibernate.AuditInterceptor</prop>
<prop key="hibernate.show_sql">true</prop>
<!--<prop key="hibernate.default_catalog">DEALS</prop> -->
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="emf" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
这是我收到 Missing Table 错误消息的实体文件。
@Entity
@Table(name="CUSTOMER")
public class CustomerEt {
private String id;
private String lastName;
private String firstName;
private String middleName;
@Id
@Column(name="CUSTOMER_ID")
public String getId() {
return id;
}
@Column(name="LAST_NAME")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column(name="FIRST_NAME")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name="MIDDLE_NAME")
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
}
最佳答案
感谢您回答我的问题。我终于弄清楚了我的设置问题。 H2 正在运行嵌入式模式。我假设即使使用嵌入式模式,数据也应该在 JVM 关闭后仍然存在。然而,这对我来说显然不是真的。因此,当我将其切换到 TCP/服务器模式时,一切都顺利进行,没有任何问题。
如果其他人遇到同样的问题,请在这里发表评论,我很乐意提供帮助。
关于spring - HibernateException 缺少表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870581/
我正在做这个项目,其中我有一个用 Java (HttpServlet) 完成的 Web 服务,它使用 Hibernate 选择、插入和更新信息到数据库中,并将对象数组作为 JSON 返回给连接到 JS
我尝试同时修改大约 14 个 REST 实体。 前几次修改是成功的(以及中间的一些修改),其他一些修改偶尔会失败,出现 HibernateException。 这是我的 servlet: public
假设我们有一些看起来像这样的实体(我会尽量保持简单): @Entity class MainEntity { //nothing too special here } @Entity class
我有这个项目设置,我正在尝试使用 JPA 和 Hibernate 作为提供程序来将数据存储在我的本地 h2 数据库中。它全部配置为我的 spring 项目的一部分,我使用 tomcat 作为我的服务器
我正在尝试测试 hibernate 在我的项目中是否工作,因为我正在尝试创建 session ,IDEA 告诉我 org.hibernate.HibernateException 和 java.lan
我正在使用带有基本 hibernate 程序的 MySQL Workbench 5.2 CE 数据库在运行时它给我错误: Caused by: org.hibernate.HibernateExcep
我有一个执行以下步骤的应用程序: 在 session 中放置对象: def product = Product.get(1) session["product"] = product 执行 Ajax
我在 Hibernate 和 Spring 开发方面绝对是新手,我有以下问题 我有一个名为 KM_ProjectInfoStatus 的实体类,它映射一个名为 KM_PROJECT_INFO_STAT
我不断收到此错误...使用 appach tomcat 的 Eclips IDE 根本原因 java.lang.ClassNotFoundException: org.hibernate.Hibern
我是 Hibernate 的新手。我创建了一个简单的程序来使用 Hibernate 将值插入数据库。 我的文件结构是这样的 src -> com.visolve -> AddStudent.java
嗨,我面临一个非常奇怪的问题。我正在使用 Spring MVC 3.0+Spring Security 3.2+hibernate 4.3。在登录之前,我可以在登录之前访问数据库并获取实体。但是通过
我想使用审核数据库插件将构建信息记录到数据库中。我已正确安装插件并使用以下配置: JDBC Driver class: org.hsqldb.jdbc.JDBCDriver** JDBC Url:jd
我在我的 Web 应用程序中使用 Spring Transactional 和 AspectJ。 应用程序上下文.xml
我目前使用confluence和mysql制作个人wiki。但是我有 500 异常 HibernateException。 汇合日志: Caused by: com.atlassian.conflue
这个问题在这里已经有了答案: java.lang.ClassNotFoundException: org.hibernate.HibernateException (5 个答案) 关闭 5 年前。
我是 Hibernate 的新手,在应用程序中定义 JPQL 查询时遇到以下问题。 所以我有以下情况: 1)我有这个模型KMCountryArea类,它被注释为将其映射到数据库表并定义了一个查询 @N
这是代码的最小版本,我花了很多时间才弄清楚为什么它不起作用: Query q = session.createQuery(queryString); q.setTimestamp(0, new jav
我试图删除数据库中不存在的实体,但 delete() 方法没有抛出任何异常。 当我试图删除一个不存在的实体时,如何得到一个错误? 我已经在下面复制了我的代码: public void remove(M
我收到此错误消息: error: Found shared references to a collection: Person.relatedPersons 当我尝试执行 addToRelatedP
完整的堆栈跟踪: org.hibernate.HibernateException: Could not instantiate resultclass: com.firstbankpr.lmu.da
我是一名优秀的程序员,十分优秀!