0

データベースのレコードを更新しようとしています。次のコードを使用しています。

System.out.print("Update");
Session session1 = HibernateUtil.getSessionFactory().openSession();
Query q = session1.createQuery("FROM Developer WHERE id = :id");
q.setParameter("id", 1);
Developer developer = (Developer)q.list().get(0);
developer.setContact("Jack");
session1.update(developer);

プロジェクトを実行すると、コンソールに次のように表示され、それ以上進みません。

INFO: Update
INFO: Hibernate: select developer0_.id as id0_, developer0_.contact as contact0_,   
   developer0_.phone_1 as phone3_0_
   from developer developer0_ where developer0_.id=?

開発者.java

package net.viralpatel.contact.model;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 *
 * @author Jack
 */
@Entity
@Table(name="developer")
public class Developer implements Serializable {

    private static final long serialVersionUID = -8767337896773261247L;

    private int id;
    private String contact;
    private int phone_1;

    @Id
    @GeneratedValue
    @Column(name="id")
    public int getID() {
        return id;
    }

    public void setID(int ID) {
        this.id = ID;
    }

    @Column(name="contact")
    public String getContact() {
        return contact;
    }

    public void setContact(String Contact) {
        this.contact = Contact;
    }

    @Column(name="phone_1")
    public int getPhone_1() {
        return phone_1;
    }

    public void setPhone_1(int Phone_1) {
        this.phone_1 = Phone_1;
    }


}

次のコードを使用して、データベースの同じテーブルに行を挿入できます

Session session1 = HibernateUtil.getSessionFactory().openSession();
session1.beginTransaction();
session1.save(developer);
session1.getTransaction().commit();
4

1 に答える 1

1

update メソッドでトランザクションを開かないのはなぜですか? 常にトランザクションを使用する必要があります。

Session session1 = HibernateUtil.getSessionFactory().openSession();
        session1.beginTransaction();
 Query q = session1.createQuery("FROM Developer WHERE id = :id");
    q.setParameter("id", 1);
    Developer developer = (Developer)q.list().get(0);
    developer.setContact("Jack");
    session1.update(developer);
 session1.getTransaction().commit();

また、クエリを使用する代わりに、session.get を使用して ID を持つオブジェクトを取得しないのはなぜですか? あなたはこのようにするかもしれません。

Session session1 = HibernateUtil.getSessionFactory().openSession();
            session1.beginTransaction();
        Developer developer = (Developer)session1.get(Developer.class,1);
        developer.setContact("Jack");
        session1.update(developer);
     session1.getTransaction().commit();
于 2013-06-04T07:13:15.950 に答える