2011-12-16 149 views
0

我编写了一个不更新表格的简单休眠应用程序。以下是我的代码。该表被创建,但它没有更新无法更新表格

** ** Contact.java

public class Contact { 
private String firstName; 
private String lastName; 
private String email; 
private long id; 

public String getEmail() { 
    return email; 
} 

public String getFirstName() { 
    return firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setEmail(String string) { 
    email = string; 
} 

public void setFirstName(String string) { 
    firstName = string; 
} 

public void setLastName(String string) { 
    lastName = string; 
} 

public long getId() { 
    return id; 
} 

public void setId(long l) { 
    id = l; 
} 

} 

FirstExample.java

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class FirstExample { 
public static void main(String[] args) { 
    Session session = null; 

    try { 

     SessionFactory sessionFactory = new Configuration().configure() 
       .buildSessionFactory(); 
     session = sessionFactory.openSession(); 

     System.out.println("Inserting Record"); 
     Contact contact = new Contact(); 
     contact.setId(3); 
     contact.setFirstName("Tausif"); 
     contact.setLastName("rahmathullah"); 
     contact.setEmail("[email protected]"); 
     session.save(contact); 
     System.out.println("updated"); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
     e.printStackTrace(); 
    } finally { 
     if (session != null) { 
      session.flush(); 
      session.close(); 
     } 
    } 
} 
} 

的hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost/simpHiber</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">root</property> 
    <property name="hibernate.connection.pool_size">10</property> 
    <property name="show_sql">true</property> 
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
    <property name="hibernate.hbm2ddl.auto">update</property> 
    <mapping resource="contact.hbm.xml"/> 
</session-factory> 
</hibernate-configuration> 

contact.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
<class name="Contact" table="CONTACT"> 
    <id name="id" type="long" column="ID" > 
    <generator class="assigned"/> 
    </id> 

<property name="firstName"> 
<column name="FIRSTNAME" /> 
</property> 
<property name="lastName"> 
<column name="LASTNAME"/> 
</property> 
<property name="email"> 
<column name="EMAIL"/> 
</property> 
</class> 

+0

您可以在日志中添加一些日志记录到 – Mick 2011-12-16 13:22:51

+0

日志吗?对不起,你没有得到你! – javaDisciple 2011-12-16 13:26:03

回答

1

由于您使用的则assigned作为ID,你需要每节省您的时间设置不同的ID。现在

Contact contact = new Contact(); 
    contact.setId(3);//Change the id every time you insert. 
    contact.setFirstName("Tausif"); 
    contact.setLastName("rahmathullah"); 
    contact.setEmail("[email protected]"); 
    session.save(contact); 

如果你想更新条目而不是重新插入使用,

session.saveOrUpdate(contact); 

如果存在于数据库中id如果是将插入这将触发一个更新查询不。

0

在使用log4j的在你的应用程序中,有时你可能会遇到以下消息:

的log4j:警告没有附加目的地可以为记录器(somePackageName.someClassName)中找到。 log4j:WARN请正确初始化log4j系统。

您看到此消息的原因是您的log4j配置文件(即log4j.xmllog4j.properties)在类路径中找不到。将log4j配置文件放在应用程序classpath中可以解决问题。

还有一件事情,这不是一个错误。它是一个警告。意味着它会在工作时产生任何问题。