草庐IT

hibernate-tools

全部标签

java - 克服 Hibernate 中的延迟加载问题,多对多关系

自学Hibernate,我有以下表结构/关系由以下类表示...用户@Entity@Table(name="users")publicclassUserimplementsIUser,Serializable{@Id@GeneratedValue(strategy=javax.persistence.GenerationType.IDENTITY)@SequenceGenerator(name="user_key_seq")@Column(name="key",insertable=false,updatable=false)privateLongkey;@Column(name="na

java - Hibernate 序列生成器的对象名称无效

我正在开发一个应用程序,它通过Hibernate框架访问运行SQLServer2012的数据库。但是,我无法弄清楚如何使SequenceGenerator注释的实例起作用;每当我尝试将新对象实例保存到我的数据库表时,我都会遇到异常。要保存的类如下:importjava.io.Serializable;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;impor

java - 将动态数据设置为 @Range 注释的最小和最大属性 - hibernate validator

我正在使用HibernateValidator来验证数据。我使用@Range属性来验证特定字段。@Range(min=0,max=100)privateStringamount;这很好,但我可以动态更改min和max的值而不是硬编码。我的意思是我可以做类似的事情吗:@Range(min=${},max=${})privateStringamount; 最佳答案 Java中的注解使用常量作为参数。您不能动态更改它们。编译常量只能是原语和字符串。检查这个link.如果你想让它可配置,你可以将它们声明为staticfinal。例如:pri

java - hibernate导入import.sql失败

我想在每次应用程序运行时自动删除表格并创建一个新表格,并自动插入预定义的数据。我已经在import.sql中准备了数据。我已经在application.properties中设置了spring.jpa.hibernate.ddl-auto=create-drop。但是,为什么会出现以下错误?我可以手动插入它。2015-11-2020:53:57.242ERROR7092---[ost-startStop-1]org.hibernate.tool.hbm2ddl.SchemaExport:HHH000388:Unsuccessful:INSERTINTOgender2015-11-202

java - Jackson JSON 和 Hibernate JPA 问题的无限递归(又一个)

我在这方面找到了大量资源,例如这个-InfiniteRecursionwithJacksonJSONandHibernateJPAissue.我已经尝试实现那里描述的所有各种建议(包括基本的@JsonIgnore),但无济于事。无论我尝试什么,除了无限递归错误之外,我什么都得不到。我认为我有一个非常相似/典型的设置,但显然有问题,因为尽管使用了@JsonManagedReference、@JsonBackReferencere和@JsonIdentityInfo注释,但我仍然收到错误。我的表是“exchange”和“stock”,它们之间有manytoMany,我一直在通过Exchan

java - 我如何保证 Thread.sleep 至少 hibernate 那么长的时间?

根据thisquestion,Thread.sleep不一定保证在您指定的时间内hibernate:它可能更短或更长。如果您阅读Thread.sleep的文档,您会发现对于sleep的确切持续时间没有强有力的保证。它特别指出持续时间是subjecttotheprecisionandaccuracyofsystemtimersandschedulers这(有意)含糊但暗示不应过分依赖持续时间。特定操作系统上可能的hibernate持续时间的粒度由线程调度程序的中断周期决定。InWindows,thescheduler'sinterruptperiodisnormallyaround10o

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