不能自动生成数据库表

时间:2021-04-26 21:43:09
下面是spring的bean.xml文件,启动之后,查看数据库,没有看到自动生成的数据库表

<?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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
           
 <context:annotation-config />
 <context:component-scan base-package="com.message.*" />

<!-- 连接数据库 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/ssh" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>

<!-- SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- <property name="packagesToScan" value="com.message.entity"></property> -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hbm2ddl.auto">update</prop>
</props>
</property>
 <property name="annotatedClasses">  
        <list>  
            <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>
        </list>  
    </property>  

</bean>

  </beans>

15 个解决方案

#1


不知道哪里出现问题了

#2


账号和密码没错的

#3


哪几行代码是自动生成数据库表的?

没看到啊~~

#4


你是说让hibernate自动生成下面的表么??貌似没有这个功能吧,反正我是手工建的。想想要是你在User类里加变量,hibernate也会同步到User表的话,估计就出大问题了。。或者你把配置删了,hibernate也会删掉表的话,那就更惨了。。

 <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>

#5


<prop key="hbm2ddl.auto">update</prop> 配置hibernate可以把表自动建出来但数据库不能他给你建需要你自己建,没见你关联xxx.hbm.xml啊

#6


xxx.hbm.xml文件里看看

#7


并不是写个配置文件就自动建表了啊,你可以写个测试方法运行下就可以生成表了

#8


你知道拿错了吗 。。。。。??  <prop  value="hibernate.hbm2ddl.atuo" >update</prop>
不能自动生成数据库表

在 spring的  配置文件中 配置  hibernate 咱 hibernate配置的基础上  加上 hibernate.   小细节

#9


引用 6 楼 u011222719 的回复:
xxx.hbm.xml文件里看看
  这个 是在 spring 中 配置 hibernate  还有   ...hbm.xml?   不会吧。。

#10


引用 4 楼 bill0605030109 的回复:
你是说让hibernate自动生成下面的表么??貌似没有这个功能吧,反正我是手工建的。想想要是你在User类里加变量,hibernate也会同步到User表的话,估计就出大问题了。。或者你把配置删了,hibernate也会删掉表的话,那就更惨了。。

 <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>


有这个  功能的  在 持久层的 model  的实体类里面 的属性上 加 上  @Entity   @Table(name=" ")
一般不写  @Table就是 默认生成的表为  实体类的  类名 当然 加上 就是自定义 表名了

当然  这是 annnotation注解。。也可以在 与实体类 关联的  xml文件中 配置

#11


引用 9 楼 zhouren1314 的回复:
Quote: 引用 6 楼 u011222719 的回复:

xxx.hbm.xml文件里看看
  这个 是在 spring 中 配置 hibernate  还有   ...hbm.xml?   不会吧。。

我找到哪里错了,是mysql方言上出了错误了,把org.hibernate.dialect.MySQLDialect改成org.hibernate.dialect.MySQL5Dialect就行了

#12


嗯,我用的是sqlserver,听说mysql不能少了那个5,看版本了

#13


引用 12 楼 u011222719 的回复:
嗯,我用的是sqlserver,听说mysql不能少了那个5,看版本了


不是吧 ,,好像  注解形式 更方便啊

#14


引用 11 楼 T15675528702 的回复:
Quote: 引用 9 楼 zhouren1314 的回复:

Quote: 引用 6 楼 u011222719 的回复:

xxx.hbm.xml文件里看看
  这个 是在 spring 中 配置 hibernate  还有   ...hbm.xml?   不会吧。。

我找到哪里错了,是mysql方言上出了错误了,把org.hibernate.dialect.MySQLDialect改成org.hibernate.dialect.MySQL5Dialect就行了


  你也 太坑了吧。。。。撒分吧    呵呵 不能自动生成数据库表

#15


引用 4 楼 bill0605030109 的回复:
你是说让hibernate自动生成下面的表么??貌似没有这个功能吧,反正我是手工建的。想想要是你在User类里加变量,hibernate也会同步到User表的话,估计就出大问题了。。或者你把配置删了,hibernate也会删掉表的话,那就更惨了。。

 <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>

我也觉得是 现在这么无脑了  表都不自己建了 意义何在 万一改了个属性 那会映射到表上吗  这样会不会很扯

#1


不知道哪里出现问题了

#2


账号和密码没错的

#3


哪几行代码是自动生成数据库表的?

没看到啊~~

#4


你是说让hibernate自动生成下面的表么??貌似没有这个功能吧,反正我是手工建的。想想要是你在User类里加变量,hibernate也会同步到User表的话,估计就出大问题了。。或者你把配置删了,hibernate也会删掉表的话,那就更惨了。。

 <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>

#5


<prop key="hbm2ddl.auto">update</prop> 配置hibernate可以把表自动建出来但数据库不能他给你建需要你自己建,没见你关联xxx.hbm.xml啊

#6


xxx.hbm.xml文件里看看

#7


并不是写个配置文件就自动建表了啊,你可以写个测试方法运行下就可以生成表了

#8


你知道拿错了吗 。。。。。??  <prop  value="hibernate.hbm2ddl.atuo" >update</prop>
不能自动生成数据库表

在 spring的  配置文件中 配置  hibernate 咱 hibernate配置的基础上  加上 hibernate.   小细节

#9


引用 6 楼 u011222719 的回复:
xxx.hbm.xml文件里看看
  这个 是在 spring 中 配置 hibernate  还有   ...hbm.xml?   不会吧。。

#10


引用 4 楼 bill0605030109 的回复:
你是说让hibernate自动生成下面的表么??貌似没有这个功能吧,反正我是手工建的。想想要是你在User类里加变量,hibernate也会同步到User表的话,估计就出大问题了。。或者你把配置删了,hibernate也会删掉表的话,那就更惨了。。

 <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>


有这个  功能的  在 持久层的 model  的实体类里面 的属性上 加 上  @Entity   @Table(name=" ")
一般不写  @Table就是 默认生成的表为  实体类的  类名 当然 加上 就是自定义 表名了

当然  这是 annnotation注解。。也可以在 与实体类 关联的  xml文件中 配置

#11


引用 9 楼 zhouren1314 的回复:
Quote: 引用 6 楼 u011222719 的回复:

xxx.hbm.xml文件里看看
  这个 是在 spring 中 配置 hibernate  还有   ...hbm.xml?   不会吧。。

我找到哪里错了,是mysql方言上出了错误了,把org.hibernate.dialect.MySQLDialect改成org.hibernate.dialect.MySQL5Dialect就行了

#12


嗯,我用的是sqlserver,听说mysql不能少了那个5,看版本了

#13


引用 12 楼 u011222719 的回复:
嗯,我用的是sqlserver,听说mysql不能少了那个5,看版本了


不是吧 ,,好像  注解形式 更方便啊

#14


引用 11 楼 T15675528702 的回复:
Quote: 引用 9 楼 zhouren1314 的回复:

Quote: 引用 6 楼 u011222719 的回复:

xxx.hbm.xml文件里看看
  这个 是在 spring 中 配置 hibernate  还有   ...hbm.xml?   不会吧。。

我找到哪里错了,是mysql方言上出了错误了,把org.hibernate.dialect.MySQLDialect改成org.hibernate.dialect.MySQL5Dialect就行了


  你也 太坑了吧。。。。撒分吧    呵呵 不能自动生成数据库表

#15


引用 4 楼 bill0605030109 的回复:
你是说让hibernate自动生成下面的表么??貌似没有这个功能吧,反正我是手工建的。想想要是你在User类里加变量,hibernate也会同步到User表的话,估计就出大问题了。。或者你把配置删了,hibernate也会删掉表的话,那就更惨了。。

 <value>com.message.entity.User</value>  
            <value>com.message.entity.DeletedMessage</value>
            <value>com.message.entity.Group</value>
            <value>com.message.entity.ReceiveMessage</value>
            <value>com.message.entity.SendMessage</value>

我也觉得是 现在这么无脑了  表都不自己建了 意义何在 万一改了个属性 那会映射到表上吗  这样会不会很扯