为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用spring和hibernate集成自动创建表和插入记录

无法使用spring和hibernate集成自动创建表和插入记录

千巷猫影 2022-06-08 16:56:40
我是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 类:- public class Employee { private int id; 私有字符串名称;私人内部工资;//getter 和 setter }这是包含所有配置的 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>  
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

通过添加使用注释来管理事务使其工作


 <bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">

        <property name="sessionFactory" ref="mysessionFactory"></property>

      </bean>

    <tx:annotation-driven transaction-manager="txManager"/>


还为 sessionFactory 添加了 setter,并为事务使用了注解,并赋予了写操作的权限。


public class EmployeeDAO 

{

    HibernateTemplate template;


    public void setTemplate(HibernateTemplate template) {

        this.template = template;

    }

    public void setSessionFactory(SessionFactory sessionFactory)

    {

    this.template=new HibernateTemplate(sessionFactory);

    }


    @Transactional(readOnly=false)

    public void saveEmployee(Employee e) 

    {

    template.saveOrUpdate(e);

    }

}


查看完整回答
反对 回复 2022-06-08
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信