2009-12-07 260 views

回答

1

除非您将实体隔离到客户端会话(ClassDescriptor.setIsIsolated),否则ClientSession实际上并不包含任何实体实例。因此,除非您禁用了缓存,否则针对ClientSession的所有查询都将返回相同的实体实例。

如果您有孤立的实体或实际使用UnitOfWork,那么您将不得不从持有的UnitOfWork/IsolatedClientSession中获取值。不建议使用多线程同时访问UnitOfWork或ClientSession。

0

我并不一定要得到你想达到什么样的,但是,根据Server and Client Sessions从TopLink的开发人员指南,你不应该翻过多个线程共享客户端会话:

虽然客户端会话是线程安全的,不要使用它们跨多个线程写入。来自同一客户端会话的多线程写入操作可能导致错误和数据丢失。有关更多信息,请参阅"Concurrency"

你能否说明为什么你需要这个?