我刚接触spring,正在尝试将hibernate与spring集成。我正在使用MySql数据库,并试图使用saveOrUpdate()方法插入一条记录。
因此,程序正在启动一个sql查询来创建表(正如它应该做的那样)。
但问题是,即使它正在为“create table”触发查询,也不会在数据库中创建该表。此外,如果在数据库中手动创建表,然后尝试插入记录,则不会执行任何操作。
我曾尝试使用save()和persist()方法代替saveOrUpdate(),但我一无所获。
这是主课。bean类(Employee)的值已设置为插入记录。
public static void main( String[] args )
{
ApplicationContext context=new
ClassPathXmlApplicationContext("sphb.xml");
EmployeeDAO edao=(EmployeeDAO) context.getBean("d");
Employee e=new Employee();
e.setId(1);
e.setName("sourav");
e.setSalary(100000);
edao.saveEmployee(e);
}
这是bean类:-公共类Employee{private int id;private String name;private int salary;//getters和setters}
这是包含所有配置的xml文件。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/db"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>
<bean id="mysessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mappingResources">
<list>
<value>mapping.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop
key
="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="template"
class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory" ref="mysessionFactory"></property>
<property name="checkWriteOperations" value="false"></property>
</bean>
<bean id="d" class="demo.sphbIntegrate.EmployeeDAO">
<property name="template" ref="template"></property>
</bean>
</beans>
这是DAO类:-
public class EmployeeDAO
{
HibernateTemplate template;
public void setTemplate(HibernateTemplate template) {
this.template = template;
}
public void saveEmployee(Employee e)
{
template.saveOrUpdate(e);
}
}
未在数据库中手动创建表时的输出:-
log4j:WARN No appenders could be found for logger
(org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
more info.
**Hibernate: create table employee (id integer not null, name varchar(255),
salary integer, primary key (id)) type=MyISAM
Hibernate: select employee_.id, employee_.name as name2_0_,
employee_.salary as salary3_0_ from employee employee_ where employee_.id=?
Exception in thread "main"
org.springframework.dao.InvalidDataAccessResourceUsageException: could not
extract ResultSet; SQL [n/a]; nested exception is
org.hibernate.exception.SQLGrammarException: could not extract ResultSet**
at org. springframework. orm. hibernate5. SessionFactoryUtils.
convertHibernateAccessException (SessionFactoryUtils.java:230)
at org. springframework. orm. hibernate5. HibernateTemplate. doExecute
(HibernateTemplate.java:387)
and 15 more...
手动创建表时的输出:-
log4j:WARN No appenders could be found for logger
(org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
more info.
**Hibernate: select employee_.id, employee_.name as name2_0_,
employee_.salary as salary3_0_ from employee employee_ where employee_.id=?**
只执行这个选择查询,而不是插入一个。
通过添加一个使用注释来管理事务来使其工作
<bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="mysessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
运行时收到此错误。
在尝试创建具有自动生成ID的表时,我遇到了一个异常: commandAcceptanceException:“执行DDL时出错”create table seat(id bigint not null,description varchar(255),num integer not null,PROCY decimal(19,2),row char(255)not null,primary key
我刚开始使用hibernate,总是会遇到这样的错误: 错误:HHH000388:不成功:创建表用户(id bigint not null auto_increment,mail varchar(255),passwort varchar(255),primary key(id))错误:从存储引擎获取错误-1 这是我的映射类:
试图用hibernate创建表,但它已经创建并删除了。 hibernate.cfg.xml:
问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 我有带有Hibernate和Spring框架的Maven项目。我希望Hibernate自动创建表,但是只是删除所有现有表,并且不创建所需的表。在会话工厂初始化期间不会引发任何异常,但是当我
我正在尝试使用JPA生成表。但我不能创造它。代码中没有错误,但似乎存在配置错误。但我找不到它,我尝试了很多配置但没有发生。多谢. 这是: } pom.xml