可能这是一个简单的问题,但它应该已经在我的意见。我想在expDate小于当前日期的每个拍卖中设置状态。 expDate是数据库中的DATETIME。其实它不起作用。你能帮忙吗? 我也试图与CURRENT_TIMESTAMPjpa datetime比较eclipselink
Query query = entityManager.createQuery("UPDATE Auction e SET e.status = 0 WHERE e.expDate < :today");
query.setParameter("today", new Date(), TemporalType.TIMESTAMP);
编辑:
Query query = entityManager.createQuery("UPDATE Auction e SET e.status = 0 WHERE e.status = 1");
是行不通了。我使用:@PersistenceContext() EntityManager entityManager;
看来,更新查询没有执行。
你打电话给query.executeUpdate();? createQuery只给你一个查询对象,然后你可以在执行之前使用它来添加提示等。 – Chris
我无法使用executeUpdate获取来自PersistantContext的非事务性entityManager –
是的,它需要一个事务。如果您不使用JTA,请将您的更改包装在em.getTransaction()。begin(); em.getTransaction()提交();调用,否则你需要将你的方法包装在一个事务中,或者从容器中查找来启动它。 – Chris