草庐IT

hibernate-mapping

全部标签

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

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

Java ConcurentMap keySet() 修改 map 并迭代键集时的问题

快速背景我有一个并发映射,用于缓存一些经常更改的值(仍然值得在测试中缓存它们)。我想通过检查值中的过期时间定期从缓存中逐出项目。我正在使用keySet()方法来获取对我所有键的引用,然后检查值,如果过期则删除它们。在其他线程中,不断查询和更新(删除)缓存。在keySet()的javadoc中,它提到如果在我遍历键集集时map发生变化,结果是未定义的。显然,我想要一种明确的方式来处理这个问题,以便结果有效。将Set传递给HashSet然后迭代这个集合就足够了吗,因为据我所知,这个集合不会得到map的支持,这是一种浪费内存的方式吗?任何想法表示赞赏。不幸的是,我的驱逐器并不是从并发映射中删

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 - 包含 Set 的 @ManyToMany Map 的 JPA2 持久性

我需要保留类型为Map>的成员,使用JPA2注释。关系是多对多的,Item对象是实体。我是否应该创建一个单独的中介实体持有Set还是可以直接映射?如果缺少某些上下文,请告知。 最佳答案 ShouldIcreateaseparateintermediaryEntityholdingSetorisadirectmappingpossible?JPA不支持嵌套集合关系(ListofLists,MapofSets,等等)。这是关于Map的规范的相关部分:2.7MapCollectionsCollectionsofelementsandent

java - 如何在 Play! 的 YAML 文件中定义 map 框架?

我正在使用Play!框架,我有一个模型(一个实体),它有一个Map类型的变量。为了做一些测试,我每次启动应用程序时都会加载一个YAML文件,但我不知道定义Map的语法。假设我有这门课publicclassaClass{publicintarg1;publicStringarg2;publicMaparg3;}我的YAML文件会是什么样子?我试过这个:aClass(object1)arg1:34arg2:aStringarg3:[key1:value1,key2:value2]这是我的许多尝试之一。我不知道语法,我在Internet上找不到它。我认为玩!使用SnakeYAML作为YAML