<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="foo">
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:test</property>
<property name="hibernate.connection.username">test</property>
<property name="hibernate.connection.password">test</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hiernate.hbm2ddl.auto">validate</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/asm/hibernate/domain/Student.hbm.xml"/>
<mapping resource="com/asm/hibernate/domain/Teacher.hbm.xml"/>
</session-factory>
</hibernate-configuration>这是我的hibernate.cfg.xml文件,不管我把hbm2ddl.auto配置成什么值,结果都会把以前建的表删除掉。我的java代表中并没有创建表的语句,请问这是为什么啊????
小弟刚学hibernate,请大侠们帮帮忙,只用到hibernate,没有struts spring.
解决方案 »
- 小白刚学Linux,请问 | 在Linux命令中是什么意思
- spring+quartz+ibatis 运行一段时间就无不保存数据。。求助!!急!!
- java好学吗?
- WWebservice 服务,多次重复调用其中某个方法,出现错误。
- JAVA怎么样自动处理一个文件夹下面所有的文本文件?大虾们请指教
- 请教tomcat下部署ibatis jpetstore遇到的数据库操作问题
- 求助:JSP中tomcat环境下用JTDS连接SQL Server2000数据库配置
- 新手求助!
- 编EJB用ACCESS数据库。如何解决呀??急!
- 如何在一个类文件中,显示另一个类文件中的记录集
- hql select new
- HibernateTemplate 和 HibernateSessionFactory
<property name="hbm2ddl.auto">create</property>-->
<!-- 启动时删数据库中的表,然后创建,退出时自动删除所有表
<property name="hbm2ddl.auto">create-drop</property>-->
<!-- 自动修改,如果表结构与实体类不一致,那么就更新表结构,数据会保留
(如果原表不存在,就创建新表;如果缺少相应的字段,就加入;对于原来存在的多余字段,不作处理)
<property name="hbm2ddl.auto">update</property>-->
<!-- 自动校验,如果表结构与实体类不一致,那么不做任何操作,报错
<property name="hbm2ddl.auto">validate</property>-->
Student.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.asm.hibernate.domain">
<class name="Student">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="teachers" table="teacher_student">
<key column="student_id"/>
<many-to-many class="Teacher" column="teacher_id"></many-to-many>
</set>
</class>
</hibernate-mapping>Teacher.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.asm.hibernate.domain">
<class name="Teacher">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="students" table="teacher_student">
<key column="teacher_id"/>
<many-to-many class="Student" column="student_id"></many-to-many>
</set>
</class>
</hibernate-mapping>每次执行都会:
drop table Student cascade constraints
drop table Teacher cascade constraints
drop table teacher_student cascade constraints
drop sequence hibernate_sequence、
连hibernate_sequence都删除并重建了。真的不可思议。。
开发环境是eclipse,只用到了hibernate,如果要源码的话可以提供
public class Student { private int id;
private String name ;
private Set<Teacher> teachers;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
}
上面的是Student.java,Teacher.java和这一样。
测试代码:s = HibernateUtil.getSession();
tr = s.beginTransaction();
Teacher t1 = new Teacher();
t1.setName("t1Name");
Teacher t2 = new Teacher();
t2.setName("t2Name");
Student s1 = new Student();
s1.setName("s1Name");
Student s2 = new Student();
s2.setName("s2Name");
Set<Teacher> ts = new HashSet<Teacher>();
ts.add(t1);
ts.add(t2);
Set<Student> ss = new HashSet<Student>();
ss.add(s1);
ss.add(s2);
t1.setStudents(ss);
t2.setStudents(ss);
//s1.setTeachers(ts);
//s2.setTeachers(ts);
s.save(s1);
s.save(s2);
s.save(t1);
s.save(t2);
tr.commit();
控制台上显示的sql信息:
drop table Student cascade constraints
drop table Teacher cascade constraints
drop table teacher_student cascade constraints
drop sequence hibernate_sequence
create table Student (id number(10,0) not null, name varchar2(255 char), primary key (id))
create table Teacher (id number(10,0) not null, name varchar2(255 char), primary key (id))
create table teacher_student (student_id number(10,0) not null, teacher_id number(10,0) not null, primary key (teacher_id, student_id))
alter table teacher_student add constraint FK2E2EF2DEA1548DAC foreign key (teacher_id) references Teacher
alter table teacher_student add constraint FK2E2EF2DE90B9430C foreign key (student_id) references Student
create sequence hibernate_sequence
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into Student (name, id) values (?, ?)
Hibernate: insert into Student (name, id) values (?, ?)
Hibernate: insert into Teacher (name, id) values (?, ?)
Hibernate: insert into Teacher (name, id) values (?, ?)
Hibernate: insert into teacher_student (teacher_id, student_id) values (?, ?)
Hibernate: insert into teacher_student (teacher_id, student_id) values (?, ?)
Hibernate: insert into teacher_student (teacher_id, student_id) values (?, ?)
Hibernate: insert into teacher_student (teacher_id, student_id) values (?, ?)
每次都是这样的sql信息