2011-12-16 16 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

+0

ロギング?申し訳ありませんがuを取得しないでください! – javaDisciple

+0

プログラムからの出力。 eclipseのコンソールまたはログファイルのいずれか。これは、問題を解決しようとするときに最も有用なものです。 – Mick

答えて

1

あなたは異なるIDを使用すると、保存するたびに設定する必要があり、その後assigned 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:WARN logger(org.hibernate.type.BasicTypeRegistry).log4jの警告が見つかりませんでした:WARN log4jシステムを正しく初期化してください。 レコードを挿入する Hibernate:contact_.ID、contact_.FIRST_NAMEをFIRST2_0_、contact_として選択してください。LAST_NAMEはLAST3_0_、contact_.EMAILはEMAIL0_ frとして om CONTACT contact_ where contact_.ID =? Hibernate:CONTACT(FIRST_NAME、LAST_NAME、EMAIL、ID)の値(?、?、?、?)に挿入してください。エラーではありません。 – javaDisciple

+0

あなたはDBを見ましたか?行が挿入されていないことをどのように伝えていますか? – ManuPK

+0

はい。私はDBをチェックした。列は表示されますが空のセットが表示されます。テーブルは作成されますが、データは挿入されません。 – javaDisciple

0

、時にはあなたは、次のメッセージが発生する可能性があります、あなたのアプリケーションでのlog4jを使用している間:

log4jは:いいえアペンダはロガー(somePackageName.someClassName)のために見つかりませんでしたWARN。 log4j:WARN log4jシステムを適切に初期化してください。

このメッセージが表示される理由は、log4j構成ファイル(つまり、log4j.xmlまたはlog4j.properties)がクラスパスに見つかりません。 log4j構成ファイルをアプリケーションclasspathに配置すると、問題が解決するはずです。

もう1つこれはエラーではありません。警告です。作業中に問題が発生することがあるためです。

関連する問題