hibernate.hbm2ddl.auto设置成none仍然自动更改表结构

时间:2022-11-17 08:25:31
hibernate配置文件如下:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="connection.url">jdbc:odbc:WebSite</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">
sun.jdbc.odbc.JdbcOdbcDriver
</property>
<property name="hibernate.hbm2ddl.auto">none</property>
<mapping class="com.lujun.manage.login.entites.TblSysUser"/>
</session-factory>

</hibernate-configuration>





实体类如下:
package com.lujun.manage.login.entites;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;


/**
 * The persistent class for the tbl_sys_user database table.
 * 
 */
@Entity
@Table(name="tbl_sys_user")
public class TblSysUser implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="user_id")
private String userId;

private int activated;

@Column(name="create_by")
private String createBy;

@Column(name="create_date")
private Timestamp createDate;

private String mobile;

    @Lob()
private String note;

private String password;

private int sex;

private String tel;

@Column(name="user_login_name")
private String userLoginName;

@Column(name="user_name")
private String userName;

    public TblSysUser() {
    }

public String getUserId() {
return this.userId;
}

public void setUserId(String userId) {
this.userId = userId;
}

public int getActivated() {
return this.activated;
}

public void setActivated(int activated) {
this.activated = activated;
}

public String getCreateBy() {
return this.createBy;
}

public void setCreateBy(String createBy) {
this.createBy = createBy;
}

public Timestamp getCreateDate() {
return this.createDate;
}

public void setCreateDate(Timestamp createDate) {
this.createDate = createDate;
}

public String getMobile() {
return this.mobile;
}

public void setMobile(String mobile) {
this.mobile = mobile;
}

public String getNote() {
return this.note;
}

public void setNote(String note) {
this.note = note;
}

public String getPassword() {
return this.password;
}

public void setPassword(String password) {
this.password = password;
}

public int getSex() {
return this.sex;
}

public void setSex(int sex) {
this.sex = sex;
}

public String getTel() {
return this.tel;
}

public void setTel(String tel) {
this.tel = tel;
}

public String getUserLoginName() {
return this.userLoginName;
}

public void setUserLoginName(String userLoginName) {
this.userLoginName = userLoginName;
}

public String getUserName() {
return this.userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

}


每次在启动的时候hiber就把表结构变了,sql输出如下:
drop table tbl_sys_user
create table tbl_sys_user (user_id varchar(255) not null, activated int not null, create_by varchar(255) null, create_date datetime null, mobile varchar(255) null, note text null, password varchar(255) null, sex int not null, tel varchar(255) null, user_login_name varchar(255) null, user_name varchar(255) null, primary key (user_id))


我用的是hibernate 3.5,哪位高手帮我一下,谢谢,或者发邮件给我:45104799@qq.com

10 个解决方案

#1


额,还是没人回复?  我自己顶一下

#2


继续顶。。。。。

#3


你在程序中有没有对
hibernate.hbm2ddl.auto属性进行相关设置?

#4


<property name="hibernate.hbm2ddl.auto">none</property>
<mapping class="com.lujun.manage.login.entites.TblSysUser"/>
是不是映射的资源,在进行配置xml文件的时候出现错误

#5


validate               加载hibernate时,验证创建数据库表结构
 create                  每次加载hibernate,重新创建数据库表结构
 create-drop        加载hibernate时创建,退出是删除表结构
 update                 加载hibernate自动更新数据库结构
就没有none

#6


引用 3 楼 paullbm 的回复:
你在程序中有没有对
hibernate.hbm2ddl.auto属性进行相关设置?

没有在代码里面进行这方面的设置,非常奇怪,hibernate.hbm2ddl.auto没有任何用,无论怎么改,都会drop table然后create

#7


引用 4 楼 lims813927980 的回复:
<property name="hibernate.hbm2ddl.auto">none</property>
<mapping class="com.lujun.manage.login.entites.TblSysUser"/>
是不是映射的资源,在进行配置xml文件的时候出现错误

映射资源的配置方面貌似没有任何问题,配置文件和那个资源我都已经粘贴在帖子里面了。
我那个实体类是使用eclipse自动生成的,会不会是这方面的问题?

#8


现在已经发现,当时为了测试方便,我从数据库里面查询数据的语句是在创建session factory的同时调用的,可能以内执行时间的原因,所以drop table之后,还没有来得及create table,查询就执行了,所以查询的时候就抛出异常:找不到表。
后来我把查询放在一个servlet里面执行,就OK了。但是仍然在每次启动的时候会直接执行  drop table  create table这样的动作,表里面的数据都没了 让人无比郁闷。

#9


我也遇到过同样的问题,每次表结构发生变化......

#10


草他吗的,老子现在就是这个问题,搞死我了,号称什么最大的程序员论坛CSDN一个高手都没有,都说查文档,我说查你妹,shit!

#1


额,还是没人回复?  我自己顶一下

#2


继续顶。。。。。

#3


你在程序中有没有对
hibernate.hbm2ddl.auto属性进行相关设置?

#4


<property name="hibernate.hbm2ddl.auto">none</property>
<mapping class="com.lujun.manage.login.entites.TblSysUser"/>
是不是映射的资源,在进行配置xml文件的时候出现错误

#5


validate               加载hibernate时,验证创建数据库表结构
 create                  每次加载hibernate,重新创建数据库表结构
 create-drop        加载hibernate时创建,退出是删除表结构
 update                 加载hibernate自动更新数据库结构
就没有none

#6


引用 3 楼 paullbm 的回复:
你在程序中有没有对
hibernate.hbm2ddl.auto属性进行相关设置?

没有在代码里面进行这方面的设置,非常奇怪,hibernate.hbm2ddl.auto没有任何用,无论怎么改,都会drop table然后create

#7


引用 4 楼 lims813927980 的回复:
<property name="hibernate.hbm2ddl.auto">none</property>
<mapping class="com.lujun.manage.login.entites.TblSysUser"/>
是不是映射的资源,在进行配置xml文件的时候出现错误

映射资源的配置方面貌似没有任何问题,配置文件和那个资源我都已经粘贴在帖子里面了。
我那个实体类是使用eclipse自动生成的,会不会是这方面的问题?

#8


现在已经发现,当时为了测试方便,我从数据库里面查询数据的语句是在创建session factory的同时调用的,可能以内执行时间的原因,所以drop table之后,还没有来得及create table,查询就执行了,所以查询的时候就抛出异常:找不到表。
后来我把查询放在一个servlet里面执行,就OK了。但是仍然在每次启动的时候会直接执行  drop table  create table这样的动作,表里面的数据都没了 让人无比郁闷。

#9


我也遇到过同样的问题,每次表结构发生变化......

#10


草他吗的,老子现在就是这个问题,搞死我了,号称什么最大的程序员论坛CSDN一个高手都没有,都说查文档,我说查你妹,shit!