2 abbzle abbzle 于 2017.01.05 11:23 提问

Hibernate 数据库连接 100C

数据库不能自动建表,启动时也不见报错。配置代码如下:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
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.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" default-lazy-init="false">
<!-- 加载jdbc.properties配置文件-->

   <aop:aspectj-autoproxy />
   <context:annotation-config/>
   <context:component-scan base-package="com.bwgl"></context:component-scan>
      <!-- 加载连接数据库配置文件:db.properties -->
  <context:property-placeholder location="classpath:properties/db.properties"/>

    <!-- 配置数据源需要commons-dbcp.jar和commons-pool.jar- -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${driverClassName}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
    <!-- 连接池启动时的初始值 -->
    <property name="initialSize" value="5" />
    <!-- 连接池的最大值 -->
    <property name="maxActive" value="15" />
    <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
    <property name="maxIdle" value="10" />
    <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
    <property name="minIdle" value="5" />
</bean><!--

     配置Spring数据源事务管理器 -->
<bean id="transactionManagerBean"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>


 <!--hibernate 配置--> 
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <!-- 配置ORM文件 -->
    <property name="mappingResources">
    <list>

      <value>com/bwgl/res/RyCuster.hbm.xml</value>
      <value>com/bwgl/res/RyGuroom.hbm.xml</value>
      <value>com/bwgl/res/RyType.hbm.xml</value>
      <value>com/bwgl/res/RyRetroom.hbm.xml</value>
      <value>com/bwgl/res/RyEnter.hbm.xml</value>
      <value>com/bwgl/res/RyUser.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
        <value>
        hibernate.dialect=org.hibernate.dialect.OracleDialect
        hibernate.show_sql=true
        hibernate.format_sql=false
        hibernate.use_sql_comments=true 
        hibernate.hbm2ddl.auto=update
        </value>


    </property>

</bean>


<!-- 基于注解(@Transactional)的事务管理 -->
<!-- 定义事务通知,指定事务管理器 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManagerBean">
    <tx:attributes>
        <!-- 设置事务行为 -->
        <tx:method name="add*" propagation="REQUIRED" />
        <tx:method name="delete*" propagation="REQUIRED" />
        <tx:method name="update*" propagation="REQUIRED" />
        <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" />
        <tx:method name="set*" propagation="REQUIRED" />
        <tx:method name="modify*" propagation="REQUIRED" />
        <!-- 其它方法是用默认的事务行为 -->
        <tx:method name="*" propagation="NOT_SUPPORTED" read-only="true" />
    </tx:attributes>
</tx:advice>

<aop:config>
<!-- 定义切入点;确定要拦截的方法(拦截所有类DepartServiceImpl中的方法) -->
<aop:pointcut id="filterMethods" expression="execution(* com.bwgl.service..*.*(..))" />
<!-- 定义事务通知 -->
<aop:advisor pointcut-ref="filterMethods" advice-ref="transactionAdvice"/>
</aop:config>

4个回答

welan123123
welan123123   2017.01.05 12:00

可能你的hibernate.cfg.xml配置文件中缺少了一个自动创建数据库表的语句:

update

welan123123
welan123123 回复abbzle: 还有就是检测一下你的实体类属性,有没有用到sql关键字,最容易犯错的“user”
11 个月之前 回复
welan123123
welan123123 回复abbzle:加上这句试试“ <property name="hibernate.hbm2ddl.auto">create</property>”
11 个月之前 回复
abbzle
abbzle hibernate.hbm2ddl.auto=update,有了
11 个月之前 回复
ljheee
ljheee   Rxr 2017.01.05 12:40

http://blog.csdn.net/ljheee/article/category/6409075
看一下这个,有关于hibernate工程详细介绍

JE_GE
JE_GE   2017.01.05 22:17

是不是oracle的数据库还没有建表权限哦

sheldon178
sheldon178   2017.01.07 15:24

这个是需要配置的,你检查一下配置,可以百度一下。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!