1

如果它具有当前日期,我想从 mysql 表中删除数据。

这是我编写的代码,在“ERROR”行显示异常:

从应用了 where 条件的表中删除数据的过程是什么?

                    Date date=new Date();

                     SimpleDateFormat myFormat=new SimpleDateFormat("dd-MM-yyyy");

                     String todayDate=myFormat.format(date);

                    String query="delete * from today_list where today_date="+"'"+todayDate+"'";    
        Transaction t1=session.beginTransaction();  
        session.createQuery(query).executeUpate();//ERROR
                    t1.commit();
4

4 回答 4

4

不要将实际参数值连接到查询字符串中。改为使用setParameter

Query query = session.createQuery("delete from todayList where todayDate = :date ");
query.setParameter("date", date);
query.executeUpate();

这很容易弄清楚,但下次请也发布错误消息。

编辑还请注意查询字符串中的表名。它不是数据库中的实际表名,而是 Hibernate 实体名称。

于 2012-09-19T09:51:45.133 回答
3

根据 SQL 语法,您不应该*在之后编写delete,即将您的语句更改为

delete from ...

尽管在处理包括 Hibernate 在内的任何 ORM 时这不是正确的方法。这种方式绕过缓存(如果你有缓存)。更好的方法是使用会话 API 方法删除实体。

于 2012-09-19T09:50:36.973 回答
0

它们是可以引发异常的两件事:

1 - 你应该写不带“*”的“Delete from”

2 - 尝试找出您需要的数据格式,如果您输入错误的格式,这也可能会造成问题。

于 2012-09-19T09:57:00.013 回答
0

首先是您的代码中存在拼写错误。它必须变成session.createQuery(query).executeUpdate(); 而不是;

session.createQuery(query)..executeUpate();

使用此会话事务,您可以删除数据库中的数据:

Configuration cfg = new Configuration();
                cfg.configure("Hibernate.cfg.xml");
                SessionFactory ss = cfg.buildSessionFactory();
                Session s = ss.openSession();
                Transaction tx = s.beginTransaction();
                Query query = s.createQuery("delete from Employee where Id:Id");
                query.setParameter("Id", valueToDelete);
                query.executeUpdate();
                tx.commit();
                s.close();

这对我很有效!:)

于 2018-04-01T07:07:19.107 回答