为什么数据库不能被添加数据 [问题点数:40分]
Pengjx2014 Pengjx2014 本版等级: ![]() |
楼主 发表于:
2015-04-27 16:23:29
import java.util.HashSet; import java.util.Set; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import domain.UserSet; public class SetTest { public static void main(String[] args) { Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); UserSet user1 = new UserSet(); user1.setName("pjx"); Set emails1 = new HashSet(); emails1.add("email1"); emails1.add("email2"); user1.setEmails(emails1); UserSet user2 = new UserSet(); Set emails2 = new HashSet(); emails2.add("email3"); user2.setEmails(emails2); int id=0;// 定义主键变量 Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); id = (Integer) session.save(user1); session.save(user2); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx.rollback(); } } finally { session.close(); } // 修改数据 session = sessionFactory.openSession(); tx = null; try { tx = session.beginTransaction(); user1 = (UserSet) session.get(UserSet.class, id); // 修改user名字 user1.setName("user1 update"); user1.getEmails().remove("email1"); user1.getEmails().add("mail4"); session.update(user1); tx.commit(); } catch (RuntimeException e) { if (tx != null) tx.rollback(); throw e; } finally { session.close(); } } } package domain; import java.io.Serializable; import java.util.HashSet; import java.util.Set; public class UserSet implements Serializable { private int id; private String name; private Set emails = new HashSet(); 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 getEmails() { return emails; } public void setEmails(Set emails) { this.emails = emails; } } <?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"> <hibernate-configuration> <!-- 一个session-factory只能连接一个数据库 --> <session-factory> <!-- 数据库的用户名 --> <property name="connection.username">root</property> <!-- 密码 --> <property name="connection.password">123123</property> <!-- url --> <property name="connection.url"> jdbc:mysql://localhost:3306/hibernate </property> <!-- 作用:根据持久化类和映射文件生成表 validate create-drop create update --> <property name="hbm2ddl.auto">update</property> <!-- 显示hibernate内部生成的sql语句 --> <property name="hibernate.cache.use_second_level_cache">true</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <!-- 配置二级缓存 --> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <property name="show_sql">true</property> <!-- 数据库表Java对象映射文件表 --> <mapping resource="domain/Person.hbm.xml"/> <mapping resource="domain/Box.hbm.xml"/> <mapping resource="domain/UserSet.hbm.xml"/> </session-factory> </hibernate-configuration> 数据库脚本如下 CREATE TABLE'email_set'( ’id'int(11)NOT NULL , ’address'varchar(100)NOT NULL, PRIMARY KEY(’id') )ENGINE=InnoDB DEFAULT CHARSET=gbk CREATE TABLE'user_set'( ’id'int(11)NOT NULL auto_increment, ’name'varchar(100)NOT NULL default'’, PRIMARY KEY(’id') )ENGINE=InnoDB DEFAULT CHARSET=gbk |