Не удалось обновить базу в спящем режиме - PullRequest
0 голосов
/ 02 июня 2011

Я новичок в hibernate, и я использую hibernate 3.0 с MySQL, и я хочу сделать простые операции с базой данных, такие как вставка обновления и удаления с базой данных. Я получаю успешные результаты для вставки и удаления, но не могу обновитьконкретное поле.У меня есть постоянный класс с именем Employee с Fname, Lname, Id и mail с геттерами и сеттерами.

Это мой основной метод: -

public static void main(String[] args) {
    Session session = null;
    Random r = new Random();
    try {
        /*
         * This step will read hibernate.cfg.xml
         * 
         * and prepare hibernate for use
         */
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        session = sessionFactory.openSession();
        Transaction trx = session.beginTransaction();
        Contact contact = new Contact();
        contact = (Contact) session.get(Contact.class, new Long(1));
        // Create new instance of Contact and set
        // values in it by reading them from form object
        System.out.println("Inserting Record");
        contact.setId(r.nextLong() % 100);
        contact.setFirstName("123anand");
        contact.setLastName("nandurbarkar");
        contact.setEmail("anand_it1990@yahoo.com");
        trx.commit();
        session.update(contact);    

И это мой файл conf:1006 *

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

Пожалуйста, помогите, если вы знаете, как решить эту проблему.Заранее спасибо ...

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Вы не можете изменить идентификатор объекта. Если вы хотите посмотреть, как работает обновление других свойств, попробуйте это:

public static void main(String[] args) {
    Session session = null;
    Random r = new Random();
    try {
        /*
         * This step will read hibernate.cfg.xml
         * 
         * and prepare hibernate for use
         */
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        session = sessionFactory.openSession();
        Transaction trx = session.beginTransaction();
        Contact contact = new Contact();

        // Create new instance of Contact and set
        // values in it by reading them from form object
        System.out.println("Inserting Record");
        contact.setId(r.nextLong() % 100);
        contact.setFirstName("123anand");
        contact.setLastName("nandurbarkar");
        contact.setEmail("anand_it1990@yahoo.com");
        // this makes contact persistent. No SQL commands yet
        session.persist(contact);
        // sync the session. Here you get a SQL INSERT
        session.flush();

        // change some properties
        contact.setFirstName("ugo");

        // sync again.Here you get a SQL UPDATE
        session.flush()

        // Now, let's say you want to update an existing instance/record
        // with id = 123
        // retrieve the instance
        Contact c = session.get(Contact.class, new Long(123));
        c.setFirstName("new name");

        // sync the session with the db
        session.flush(); // <- here you get SQL UPDATE

        trx.commit();
0 голосов
/ 02 июня 2011

Я думаю, вам нужно сделать свое обновление, прежде чем совершать сеанс

Так что обмен последних двух строк должен заставить его работать: -

session.update(contact);  
trx.commit();      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...