关于hibernate的delete

如果要成批删除数据,好像没有很高效的方法啊,我是先select,然后在delete.请教有没有好一点的办法.

搞定了,菜了一把

靠,你也不说一下搞定办法?

呵呵..比较菜
它本来就提供这样得语法:
session.delete("delete from "+clazz.getName());
clazz是你要删除得类得名称,这样就可以删除全部得这个类型得数据.

我正高兴有道题能回答了。。没想到来晚了一步。。

其实它还是执行了两个sql语句完成的:

select ... from ...;
delete ... where ...;

但是省了在内存中构造PO的开销

在一些应用中会出现需要用某个字段作为主键,但是在hibernate好像只能用<id>才能作为主键.这样在程序时需要保存一个id的数据.但是有的时候这样并不是很方便,例如:
TestValue value=new TestValue();
value.setPrimaryKey(Service1.getUserName());//假设我要userName作为主键
value.setOther(Service2.getOther());
....
session.update(value);
这样好像在hibernate中不行,因为它是用id来唯一标识一个对象的.

我update的时候一般都是先load的。。。。
所以即使用自己定义的主键,也没有问题。
你可以试试。

但是我的问题是这个用来load的ID我在系统中维护比较困难,因为它没有是么用.我的主键是别的字段

直接用jdbc来delete

但如果你用了jcs的话就比较麻烦了,delete完之后
还要同步process level cache,而且不是很安全。