Java Hibernate query.executeUpdate()工作不正常
Hibernate query.executeUpdate()不工作 下面是更新的代码Java Hibernate query.executeUpdate()工作不正常,java,hibernate,hsqldb,Java,Hibernate,Hsqldb,Hibernate query.executeUpdate()不工作 下面是更新的代码 public static void expDue(){ Session session=HibernateUtil.getSessionFactory().openSession(); java.util.Date utilDate=new java.util.Date(); java.sql.Date sqldate=new java.sql.Date(utilDate.get
public static void expDue(){
Session session=HibernateUtil.getSessionFactory().openSession();
java.util.Date utilDate=new java.util.Date();
java.sql.Date sqldate=new java.sql.Date(utilDate.getTime());
Format formatter = new SimpleDateFormat("yyyy-MM-dd");
String a= formatter.format(sqldate);
boolean b=false;
if(b==false){
Query query = session.createQuery(" update Issue set dueStatus = 'true' where returnDate='"+a+"'");
int result = query.executeUpdate();
System.out.println(query.executeUpdate()+"Rows affected: " + result);
b=true;
}
这里打印结果显示正确的值
但数据库没有变化
和休眠代码
<hibernate-configuration>
<session-factory>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Database connection settings -->
<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="hibernate.connection.url">jdbc:hsqldb:db/hsql/library;shutdown=true</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">sa</property>
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- JDBC connection pool (use the built-in one) -->
<property name="connection.pool_size">1</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property
name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- disable batching so HSQLDB will propagate errors correctly. -->
<property name="jdbc.batch_size">0</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- List all the mapping documents we're using -->
<mapping class="com.habitz.librarymanagement.domain.Admin" />
<mapping class="com.librarymanagement.domain.Book" />
<mapping class="com.librarymanagement.domain.Category" />
<mapping class="com.librarymanagement.domain.Group" />
<mapping class="com.librarymanagement.domain.Issue" />
<mapping class="com.librarymanagement.domain.Member" />
</session-factory>
</hibernate-configuration>
您忘记在提交事务之前执行更新。您不在数据库中提交事务。@user1516873事务提交类似于此事务tx=null;tx=session.beginTransaction();tx.commit()@user1516873我更新了,但它仍然不工作…为什么跳过了.executeUpdate()?您应该先执行它,然后提交事务。@AlexKartishev抱歉,这是我的错误。我更新了它,但没有任何更改可能是一些缓存问题,请在提交事务后尝试关闭会话。为确保这不是问题,但为了防止出现一些问题,请从System.out.println()中删除第二个executeUpdate()。因为它被执行了两次。
Transaction tx = null;
tx = session.beginTransaction();
Query query = session
.createQuery(" update Issue set dueStatus = 'true' where returnDate='"
+ a + "'");
int result = query.executeUpdate();
System.out.println(query.executeUpdate() + "Rows affected: "
+ result);
tx.commit();
Transaction tx = null;
tx = session.beginTransaction();
boolean b = false;
if (b == false) {
Query query = session
.createQuery(" update Issue set dueStatus = 'true' where returnDate='"
+ a + "'");
query.executeUpdate();
tx.commit();