连接HSQLDB,没任何反应
hsqldb 2.2.9, hibernate 4.1.2, spring 3.1.1.hsqldb以内存方式运行。
执行了一个查询,什么都查不到,但数据库明明有东西。。。也不像是数据库没连上。怎么回事呢。
Hibernate: select user0_.OBJ_ID as OBJ1_0_, user0_.FIRST_NAME as FIRST2_0_, user0_.VERSION as VERSION0_ from TB_USER user0_ where user0_.OBJ_ID=?
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<!-- to import the Spring controllers. -->
<context:annotation-config />
<context:component-scan base-package="test">
</context:component-scan>
<bean id="myDataSourceDev" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:TestDB"/>
<property name="username" value="SA"/>
<property name="password" value=""/>
</bean>
<!-- NOTE: use hibernate -->
<bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSourceDev"/>
<property name="annotatedClasses">
<list>
<value>test.dto.User</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">500</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!--
<prop key="org.hibernate.envers.audit_table_suffix">_Audit</prop>
<prop key="org.hibernate.envers.audit_table_prefix">log_</prop>
<prop key="org.hibernate.envers.revision_field_name">rev</prop>
<prop key="org.hibernate.envers.revision_type_field_name">revtype</prop>
<prop key="org.hibernate.envers.revision_on_collection_change">true</prop>
<prop key="org.hibernate.envers.do_not_audit_optimistic_locking_field">true</prop>
<prop key="org.hibernate.envers.store_data_at_delete">true</prop>
<prop key="org.hibernate.envers.default_schema"></prop>
<prop key="org.hibernate.envers.default_catalog"></prop>
-->
</props>
</property>
</bean>
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
</beans>
--------------------编程问答-------------------- <property name="url" value="jdbc:hsqldb:mem:TestDB"/>url不对,应该是jdbc:hsqldb:hsql://localhost/类似的
package test.dto;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;
@Entity
@Table(name="TB_USER")
public class User {
@Id
@Column( name = "OBJ_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private long objId;
@Column(unique = false, name = "FIRST_NAME", nullable = false, length=50)
private String firstName;
@Version
@Column(name = "VERSION")
private long version;
public long getObjId() {
return objId;
}
public void setObjId(long objId) {
this.objId = objId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public long getVersion() {
return version;
}
public void setVersion(long version) {
this.version = version;
}
}
补充:Java , Web 开发