Java 在hibernate中更新对象

Java 在hibernate中更新对象,java,hibernate,primefaces,sql-update,Java,Hibernate,Primefaces,Sql Update,我正在使用Primefaces 3.5+hibernate 4.2.0 我正在使用primefaces中的,当我单击一个字段并更改我的表值时,我想在数据库中更新我的产品表。但是,我发现hibernate的简单属性的更新方法如下: EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); String jpqlUpdate =

我正在使用Primefaces 3.5+hibernate 4.2.0

我正在使用primefaces中的,当我单击一个字段并更改我的表值时,我想在数据库中更新我的产品表。但是,我发现hibernate的简单属性的更新方法如下:

EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();

String jpqlUpdate = "update Customer set name = :newName where name = :oldName"
int updatedEntities = entityManager.createQuery( jpqlUpdate )
                            .setParameter( "newName", newName )
                            .setParameter( "oldName", oldName )
                            .executeUpdate();
entityManager.getTransaction().commit();
entityManager.close();
如何在hibernate中更新整个对象?

您可以尝试以下方法:

DataaccessClass:

public boolean update(YourClass yourObject) {
    Transaction transaction = null;
    boolean result = false;
    try {
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.getCurrentSession();
        transaction = session.beginTransaction();
        session.update(yourObject);
        transaction.commit();

        result = true;

    } catch (Exception ex) {
        ex.printStackTrace();
        if (transaction != null) {
            transaction.rollback();
        }
    }
    return result;
}
 public boolean update2(YourClass yourObject)  {
    Transaction transaction = null;
    int result = -1;
    try {
        String sqlQuery = "UPDATE YourTable SET yourColumn1=" + yourObject.value1
                + ", yourColumn2='" + yourObject.value2 + "' WHERE [some condition]=";
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.getCurrentSession();
        transaction = session.beginTransaction();
        SQLQuery query = session.createSQLQuery(sqlQuery);
        result = query.executeUpdate();
        transaction.commit();

    } catch (Exception ex) {
        ex.printStackTrace();
        if (transaction != null) {
            transaction.rollback();
        }
    }
    return result;
}
<hibernate-configuration>
<session-factory name="session">
    <property name="hibernate.connection.driver_class">[db_driver]</property>
    <property name="hibernate.connection.url">jdbc:[db_type]://[db_ip]:[db_port]/YourDatabase</property>
    <property name="hibernate.connection.username">username</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.dialect">[db_dialect]</property>

    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">false</property>
    <property name="hibernate.current_session_context_class">thread</property>

    <mapping class="dataaccess.entity.YourClass"/>

</session-factory>
</hibernate-configuration>  
Hibernate.cfg.xml

public boolean update(YourClass yourObject) {
    Transaction transaction = null;
    boolean result = false;
    try {
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.getCurrentSession();
        transaction = session.beginTransaction();
        session.update(yourObject);
        transaction.commit();

        result = true;

    } catch (Exception ex) {
        ex.printStackTrace();
        if (transaction != null) {
            transaction.rollback();
        }
    }
    return result;
}
 public boolean update2(YourClass yourObject)  {
    Transaction transaction = null;
    int result = -1;
    try {
        String sqlQuery = "UPDATE YourTable SET yourColumn1=" + yourObject.value1
                + ", yourColumn2='" + yourObject.value2 + "' WHERE [some condition]=";
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.getCurrentSession();
        transaction = session.beginTransaction();
        SQLQuery query = session.createSQLQuery(sqlQuery);
        result = query.executeUpdate();
        transaction.commit();

    } catch (Exception ex) {
        ex.printStackTrace();
        if (transaction != null) {
            transaction.rollback();
        }
    }
    return result;
}
<hibernate-configuration>
<session-factory name="session">
    <property name="hibernate.connection.driver_class">[db_driver]</property>
    <property name="hibernate.connection.url">jdbc:[db_type]://[db_ip]:[db_port]/YourDatabase</property>
    <property name="hibernate.connection.username">username</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.dialect">[db_dialect]</property>

    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">false</property>
    <property name="hibernate.current_session_context_class">thread</property>

    <mapping class="dataaccess.entity.YourClass"/>

</session-factory>
</hibernate-configuration>  

您可以看到这一点,因为是否有可能使用简单的
update
语句?您需要这样的内容:Transaction=null;String sqlQuery=“updateyourtable SET yourColumn1=“+yourValue1+”,yourColumn2=”“+yourValue2+”,WHERE someCondition”;SessionFactory SessionFactory=HibernateUtil.getSessionFactory();Session Session=sessionFactory.getCurrentSession();事务=session.beginTransaction();SQLQuery=session.createSQLQuery(SQLQuery);结果=query.executeUpdate();commit();