Java 在hibernate中更新对象
我正在使用Primefaces 3.5+hibernate 4.2.0 我正在使用primefaces中的,当我单击一个字段并更改我的表值时,我想在数据库中更新我的产品表。但是,我发现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 =
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();