我有一个包含EmbeddedIds的列表对象:
PKtype implements Serializable
{
String a;
String b;
}
MyObject
{
PKtype pk;
String something;
}
List<MyObject> myList;
此列表是从某些文件加载的。
现在我需要保存,以防它是新的,或者合并,以防它们在会话中或在DB中,每个都是。
如果对象有Long id;
或任何其他单一标识属性,那么这样做很简单
List<MyObject> objs = session.createCriteria(MyObject.class).add(Restrictions.in("id", ids)).list();
相反,目前正在进行所有这些操作,并且一次只做一个:
for(MyObject obj : objsFromFile)
{
MyObject bdObject = session.get(MyObject.class, obj.getPk());
//do stuff
}
如果它存在则会使merge
成为save
。 (我不会在这里讨论为什么我没有使用update \ saveorupdate)
但由于文件中有X(in order of the thousands) * N(1...5)
个版本,所有这些gets
正在使执行需要数小时才能处理。
我需要Session.get(MyObject.class, List<PKtype> keys)
之类的内容,并且20到20或100乘100,具体取决于我每次决定处理的keys
的数量。
但我无法在Session
找到任何种类。我错过了什么吗? EmbeddedId
不能像这样使用?我该如何解决这个问题?