草庐IT

hibernate-postgresql

全部标签

java - hibernate 扫描包可以自动创建 SessionFactory 吗?

我可以将Hibernate配置为自动扫描包以从@Entity注释的beans创建一个SessionFactory吗?我目前正在使用Configurationconfig=newConfiguration();config.addAnnotatedClass(MyEntity.class);我不想使用hibernate.cfg.xml来配置映射。请注意,我想在不使用任何Spring或此类框架的情况下在纯Java项目中实现此目的。类似的问题之前已经用Spring回答过,但我想在不使用Spring或其他框架的情况下实现它。我对一些执行此操作的简单库持开放态度。 最

java - 在一个表上 hibernate 两个 ManyToOne 关系,第一个获取 Eager,第二个加载 LAZY

我有以下实体,一个item最多可以有两个类别,一个主要的和一个次要的。这两个类别都使用JoinColumnsOrFormulas将ManyToOne映射到category表。第一个按预期获取EAGER,但第二个未出现在SQL语句中并延迟加载。这种延迟加载会导致经典的n+1问题。这是我的项目实体,其中包含应该加入的两个类别实体:@Entity@Table(name="item",schema="public",catalog="stackoverflow_question")@DynamicUpdatepublicclassItemextendsStackOverflowQuestion

java - 仅 Hibernate 注释包

我正在寻找一个MavenArtifact,它只包含hibernate注释而没有hibernate-core。我尝试获得小型模型包。似乎在hibernate3之前有:https://mvnrepository.com/artifact/org.hibernate/hibernate-annotations常见的注解好像不包含@Type等等https://mvnrepository.com/artifact/org.hibernate.common/hibernate-commons-annotations这种情况下的最佳做法是什么? 最佳答案

java - 由于重复的 GUID,无法将数据库状态与 session org.hibernate.exception.ConstraintViolationException 同步

我使用hibernate在使用自动生成的GUID的表中插入数据,但有时插入失败并出现重复的GUID异常。例如:从Logs中,通过打印重复的GUID“0500edac-0074-4324-3436-31444231342d”,前2次尝试插入失败。所用时间如下1stattempt:08-27-201804:27:00.012,2ndattempt:08-27-201804:27:01.024,3rdattemptwasnotlogged,asitwassuccessful但在数据库中,我看到一行GUID为“0500edac-0074-4324-3436-31444231342d”,创建时间

java - 使用 Hibernate/Spring/JUnit 设置和拆除复杂的数据库状态

我有一个正在单元测试的类,它需要相当广泛的数据库设置才能运行各个测试方法。此设置需要很长时间:出于希望与手头问题无关的原因,我需要以编程方式而不是从SQL转储填充数据库。我遇到的问题是拆解。如何轻松回滚在数据库设置阶段所做的所有更改?我目前正在使用Hibernate+SpringTransactionalTesting支持,这样我的个人测试方法就包含在事务中。一个解决方案是在每个测试方法中进行数据库设置,这样数据库设置就会自动回滚。但是,测试方法将永远运行,因为每个方法都需要重新准备数据库。还有其他想法吗?基本上,我正在寻找一种方法来运行我的数据库设置,运行我的个人测试(每个测试都包含

java - 在 Hibernate 中重用查询

我在Hibernate中使用HQL查询,只是想知道我是否可以提高我的应用重用查询的性能。通常你必须为每个session创建一个新的查询对象:Sessionsession;Queryq1=session.createQuery("selectafromArticleawhereid=:id");q1.setInteger("id",123);Listresult=q1.list();现在我在HQL中有相对复杂的查询,我不想一遍又一遍地解析。有没有办法创建一个查询并在另一个session中重用它?像这样:Sessionsession;Queryq2=q1.reattach();q2.set

java - Hibernate 模型的部分更新

如果只更新某些字段,更新模型的最佳做法是什么?例如。如果我有一个人物模型:名称出生日期地址还有一个我只想更新的表单:地址我目前能看到的两个选项是:要有一个只有地址的自定义表单模型-在回发时调用数据库来检索我的对象以填写姓名和出生日期,然后返回到数据库。自定义更新SQL以仅更新相关字段。如果可能的话,我更愿意使用hibernate模型,所以我目前使用的是#1。有没有更好的办法? 最佳答案 Hibernate如何构建SQL更新可以配置为仅更新更改的字段,使用anattributecalleddynamic-updateontheclas

java - Hibernate 和 java 8 lambda 的

自从引入Java8以来,Hibernate是否正在等待一些变化?特别地有什么方法可以在Hibernate中使用lambda编写查询吗?(即类似于.netLinq-to-SQL风格)如果没有,它什么时候来(如果它计划来)。例如像这样的东西:Useru1=dbo.Users.firstOrDefault(f->f.userId=10);Listusers=dbo.Users.selectMany(w->w.userId>5); 最佳答案 我也觉得做不到。但是我看到了Jinqhttp://www.jinq.org/他们为原始SQL查询执行

java - PostgreSQL 抛出 "Connection has been abandoned"-> "An I/O error occurred while sending to the backend"

我知道有很多关于abandonedconnections的话题,但是我不知道我的情况是什么问题,所以我真的希望得到一些帮助。我有一个带有Spring的Java应用程序,它从外部服务获取一些数据,并尝试将其保存在数据库中。我对JDBC池有以下配置这是一个典型的Spring环境,在我的服务中我有以下方法@AutowiredprivateTransactionalWrapperwrapper;@Override@Transactional(propagation=Propagation.NOT_SUPPORTED)publicvoidreconcileAllEvents(Datefrom,D

java - 在 Hibernate 中遇到 org.hibernate.SessionException : Session is closed! 问题

我对此做了很多研究,但运气不佳,但所有答案都倾向于指向配置文件中的session上下文设置。奇怪的是,我第一次访问该页面时就获得了一个session连接(因此,一个成功的结果集),但是当我重新加载时,我得到以下异常:org.hibernate.SessionException:session已关闭!这是我的与数据库连接字符串无关的配置设置:falseorg.hibernate.dialect.SQLServerDialectthreadorg.hibernate.cache.NoCacheProviderfalsefalse这是我进行的调用的一个示例,它产生了我上面描述的情况。publ