我有一个带有这样的休眠映射的类:...
基本上我用一些 StreamRef 传播一个新的(或旧的)磁带,然后点击
session.saveOrUpdate(tapeInstance);
如果磁带是旧的或新的。我添加的流引用都是新的(但如果我从数据库中检索磁带,我希望能够轻松访问它的流引用)。
不幸的是,我似乎不能像我想要的那样“懒惰”——我想要的行为基本上是“如果磁带是新的,那么这意味着它的所有流都是新的,所以永远不要查看如果您可以对它们进行更新,请始终插入它们”,但是“如果磁带是旧的,请更新它,删除其旧的流引用,然后将新的流添加到其中——它们将永远是新的/唯一的,所以只需添加它们”所以基本上,不要级联更新,而是级联保存。这可能吗?
我通过设置 cascade="merge, delete, lock, refresh, evict, replicate, delete-orphan" (基本上,它缺少保存更新),然后手动删除所有旧流,然后手动添加每个流, 一次一个。有没有更好的办法?