草庐IT

Hibernate-Spatial

全部标签

java - 如何在 Hibernate 拦截器中获取 Hibernate session ?

如何在Hibernate拦截器中获取Hibernatesession?我正在尝试使用Hibernate透明地通过组织ID强制执行数据访问。我设置了一个全局过滤器来按组织ID过滤所有查询。现在,我需要使用实体拦截器在保存/更新之前为所有实体设置组织ID。组织id来自HttpSession我在Hibernatesession中将OrganizationalId设置为Filter属性,我想在我的拦截器中检索它并将其用于所有插入和更新。问题是我似乎无法访问拦截器内的session。有什么解决方法吗? 最佳答案 你可以,但我会使用一个简单的P

java - 当调用 openSession 并且无法建立与 DB 的连接时,Hibernate 不会抛出异常

当我配置hibernate以连接到数据库并且由于某种原因连接失败时,我注意到它在构建工厂(这是可以接受的)和我调用sessionFactory.openSession()(这是不太能接受)。更烦人的是,在我调用sessionFactory.openSession()之后,session.isConnected()返回true。(这是完全不能接受的)。到那一刻唯一告诉我它没有连接到数据库的提示是一个WARN日志条目,它由它在内部捕获并发送到记录器的java.sql.SQLException引起。除了创建一个伪事务来强制异常之外还有其他获取连接状态的方法吗?(也许配置中的一个选项说“不记录

java - Hibernate 二级查询缓存不工作急切获取

在NHibernateProfiler中,我观察到当我对关联使用预取时,在HQL查询中使用“左连接获取”或在标准查询中使用.SetFetchMode()时,查询不再缓存在查询缓存中。事实上,据我所知,只有非常基本的查询被缓存。如果有人可以让我深入了解哪些查询被缓存,哪些不被缓存,我将标记为答案。如果有任何不同,我正在使用Memcached...。对于查询密集型系统,L2缓存是否有更好的选择?我发现这相当具有挑战性-如果我不使用预先加载,我会遇到N+1问题(但使用缓存),如果我使用预先加载,我会从数据库中获取所有实体,但没有缓存。似乎有一条很粗的分界线,两种策略都有性能改进,但两种策略都

java - 带有类名的 JPA/Hibernate 查询?

在这个例子中com.test.Cat延伸com.test.Animal并且没有字段DB在CATcom.test.Cat的表格明确定义它的类型(不是我做的)。当我从数据库中查询我的动物时,我得到了一个动物集合。可以按类名对它们进行排序:orderbyr.class但是有没有办法使用类名作为标准呢?例如,我想让所有动物都期待狗。但运气不好-即使这样也行不通:wherer.class=?(String"ccc.test.Cat")当我遇到异常时:Causedby:java.lang.ClassCastException:java.lang.Stringcannotbecasttojava.l

java - 如何拦截Hibernate生成的SQL?

对于作为老大哥工作的安全系统(如监视强制访问控制),我们必须拦截和处理hibernate生成的所有选择语句。我们将用户、时间戳和sql选择存储在数据库中,以便使用其他工具进行一些分析。这些信息可以确定用户试图查看的内容。对于select语句,准备好的属性很有值(value)。我们需要包含所有参数的完整SQL语句。有没有我们可以加入并处理所有这些事情的监听器或拦截器?目前最大的突出问题是语句参数的收集。谢谢 最佳答案 当org.hibernatepackageissettoDEBUG,andwiththehibernate.show_

java - 如何更改 Hibernate Tools 反向工程 DAO 类的名称?

所以我正在尝试使用HibernateTools对我的数据库进行逆向工程,而我刚刚开始使用Freemarker模板来弱化它生成的代码。问题是我想更改它生成的DAO类的名称。默认情况下,DAO类以PersonH​​ome的形式命名,但是为了将名称更改为PersonDAO,我修改了dao/daohome.ftl。虽然这确实将生成的类名称更改为PersonDAO,但java文件仍称为PersonH​​ome.java。有没有地方我也可以更改生成的文件名以匹配源代码? 最佳答案 好吧,我自己已经弄清楚了。似乎虽然Hibernate工具确实支持

java - 一些基本的 JPA+Hibernate 问题?

我有一些基本问题:1)如果使用JPA注解,JPA+Hibernate组合涉及多少个xml文件?我只有persistence.xml。2)如果我使用JPA注释,是否需要hibernate.cfg.xml。因为,我直到现在才添加它。3)在使用JPA2.0和Hibernate的情况下,谁能给我基本JAR文件名的列表!!!谢谢! 最佳答案 1)HowmanyxmlfilesinvolvedinJPA+Hibernatecombination,ifJPAannotationswereused?iamhavingjustpersistence.

java - 如何将 Hibernate 映射集加载为不可修改的集?

我正在开发的一个应用程序专门使用Hibernate从数据库中获取一堆持久对象到内存中。应用程序会时不时地从数据库中刷新这个内存中的快照,这应该是与数据库的唯一通信。然后将内存中的对象用于一系列计算。计算不得修改这些对象。除了某个地方的某个类(class)不小心做了,我不得不花一天时间来寻找这个错误。现在我想知道使整个对象树不可变的最佳方法是什么。假设类层次结构如下所示:publicclassBuilding{//persistententityprivateStringname;//hibernate-mappedpropertyprivateSetinhabitants;//hibe

java - 奇怪的 classCastException hibernate 3.5 glassfish

您好,我有一个我自己无法解决的问题。我有一个war文件打包在ear中并在glassfish3.0.1上运行,使用hibernate3.5作为JPA提供程序。我用maven编译,用idea或者手动部署。每次我在我的DAO中遇到强制转换异常时:java.lang.ClassCastException:com.myproject.domain.entity.Usercannotbecasttocom.myproject.domain.entity.User其他时候它工作得很好。这种行为没有模式。有人可以阐明这里发生的事情吗?抛出异常的示例方法在com.myproject.domain.dao

java - Hibernate session.contains(类 clazz,序列化 id)

我希望能够检查session是否包含给定类/标识符的实体。我目前看不到执行此操作的方法。contains()接受一个实体对象而不是类+键get()如果实体不存在则查询数据库,这是我不想做的load()永远不会返回null,因为代理总是被创建,所以我不能使用这个方法是否可以在不对数据库产生副作用/查询的情况下执行上述操作? 最佳答案 这个有效:publicbooleanisIdLoaded(Serializableid){for(Objectkey:getSession().getStatistics().getEntityKeys(