Невозможно обновить таблицу - PullRequest
0 голосов
/ 16 декабря 2011

Я запрограммировал простое приложение гибернации, которое не обновляет таблицу. Ниже мой код. Таблица создается, но не обновляется

** 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("t.r@vl.net");
        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>

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Поскольку вы используете assigned в качестве идентификатора, вам нужно каждый раз сохранять различные идентификаторы.

    Contact contact = new Contact();
    contact.setId(3);//Change the id every time you insert.
    contact.setFirstName("Tausif");
    contact.setLastName("rahmathullah");
    contact.setEmail("t.r@vl.net");
    session.save(contact);

Сейчас, Если вы хотите обновить запись, а не вставлять ее снова, используйте,

    session.saveOrUpdate(contact);

Это вызовет запрос на обновление, если в базе данных существует id, и вставит, если его нет.

0 голосов
/ 11 июня 2012

При использовании log4j в вашем приложении иногда может появляться следующее сообщение:

log4j: ПРЕДУПРЕЖДЕНИЕ. Для логгера не найдено никаких дополнений (somePackageName.someClassName). log4j: WARN Пожалуйста, правильно инициализируйте систему log4j.

Причина, по которой вы видите это сообщение, заключается в том, что ваш файл конфигурации log4j (т.е. log4j.xml или log4j.properties) НЕ найден в пути к классам. Размещение файла конфигурации log4j в приложениях classpath должно решить проблему.

Еще одна вещь, это не ошибка. Это предупреждение. Значит, это создаст любую проблему во время работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...