如何通过Keys \ ids列表获取Hibernate Session的结果列表?

时间:2016-05-06 15:20:40

标签: java hibernate session collections criteria

我有一个包含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不能像这样使用?我该如何解决这个问题?

0 个答案:

没有答案