当前位置: 首页 > 面试题库 >

如果我有entitymanager,如何获取会话对象

贺彬
2023-03-14
问题内容

我有

private EntityManager em;

public List getAll(DetachedCriteria detachedCriteria)   {

    return detachedCriteria.getExecutableCriteria( ??? ).list();
}

如果正在使用entitymanager,如何检索会话?如何从分离标准中获取结果?


问题答案:

为了完全详尽无遗,如果您使用的是JPA 1.0或JPA 2.0实现,则情况有所不同。

JPA 1.0

对于JPA
1.0,您必须使用EntityManager#getDelegate()。但是请记住,
此方法的结果是特定 实现的,
即从使用Hibernate的应用程序服务器到其他服务器之间不可移植。例如,使用JBoss,您可以执行以下操作:


org.hibernate.Session session = (Session) manager.getDelegate();

但是,使用GlassFish,您需要执行以下操作:

org.hibernate.Session session = ((org.hibernate.ejb.EntityManagerImpl) em.getDelegate()).getSession();

我同意,这太可怕了,规范归咎于这里(还不够清楚)。

JPA 2.0

使用JPA
2.0,有一种新的(并且更好)的EntityManager#unwrap(Class<T>)方法比EntityManager#getDelegate()应用程序更受青睐。

因此,使用Hibernate作为JPA 2.0实现(请参见3.15。本机Hibernate
API),您将执行以下操作:

Session session = entityManager.unwrap(Session.class);


 类似资料:
  • 我正在尝试制作一个Minecraft客户端,但我不知道如何获取会话ID来启动游戏。我在google上搜索了一下,但无论如何都找不到从命令行启动Minecraft的答案——用户名和密码作为前缀不起作用。

  • 下面是所有3个jsp页面的代码; test1.jsp(jsp第1页的代码) test2.jsp(jsp第2页的代码) test3.jsp(jsp第3页的代码) 在我的例子中,当我第一次调用test1.jsp并单击hyper链接时,它调用test2.jsp,并发现会话已经存在,然后直接调用test3.jsp。但在实际情况中,会话既不在test1.jsp上启动,也不在test2.jsp上启动,除非它进

  • 我使用Spring靴,希望提高性能。我必须下载数据库中有50000个字段的文件。使用hibernate。我在批量插入中找到了解决方案。但我不知道如何从Crudepository获得entitymanager 我创建了MyStorageService并想保存我的文件: } 如果在MyStorageService中使用 我明白了 错误[http-nio-18842-exec-1]JpaTransact

  • 如果我在一个会话中有值,并且我需要获取会话中的所有值,如 如果我将一组复选框值转换为字符串。Im 将.jsp中选择的所有值设置为会话对象。我只需要检索保存在上述代码中的jsp中的选定值。

  • 问题内容: 如何获取烧瓶上的复选框是否已选中我正在使用Flask开发服务器环境使用Flask,Gevent和Web套接字进行项目。我用过。这里 如何获得每个连接的唯一会话ID? 我想将其存储在数据库中,并在客户端断开连接后将其删除。 如何获得活动连接总数 问题答案: 没有会话ID。 Flask中的会话只是Cookie的包装。你保存在上面的内容经过数字签名,并以cookie的形式发送给客户端。当你发

  • 问题内容: 我对Spring和Spring安全性比较陌生。 我试图编写一个程序,需要使用Spring安全性在服务器端对用户进行身份验证, 我想出了以下几点: 我的用例是,当对用户进行身份验证时,我需要放置以下属性: myUserObject是某个类的对象,我可以跨多个用户请求在整个服务器代码中对其进行访问。 问题答案: 这将由标准的spring mvc派发servlet填充,但是,如果你使用的是不