草庐IT

Hibernate-Validator

全部标签

java - 来自多个数据库的 Hibernate 实体

我们的数据模型被分成两个数据库的模式。除了在两者之间架起桥梁的少数单键关系外,这些模式是独立使用的。没有跨越两个数据库的写入事务。类似这个问题Doingajoinover2tablesindifferentdatabasesusingHibernate,我们想使用Hibernate来处理加入实体。我们不能使用数据库解决方案(DB2上的联合View)。我们已经为Hibernate设置了两个独立的数据库配置(医生和患者),这在使用DAO显式访问特定session时完美运行。我们希望在调用DoctorBO.getExam().getPatient()时使用Hibernate自动检索实体,其中

java - Java 中可靠的 JSON 字符串 validator

我需要一些可靠的JSON字符串validator的帮助-一种接收字符串并检查它是否为有效JSON的方法。示例:如果我通过{"color":"red"}或{"amount":15}它会通过,但类似于"Myinvalidjson"不会。简而言之,我需要像www.jsonlint.comvalidator一样可靠的东西。顺便说一句——我对反序列化为java对象不感兴趣,因为那不是我的要求。我可能会收到一个任意字符串,我所要做的就是验证它是否具有有效的JSON格式。我已经在这个论坛上研究了几篇关于JavaJSON字符串验证主题的帖子。到目前为止我做了什么:我尝试按以下方式使用这些类:org.j

java - Hibernate 拦截器 - 为什么在 onSave 之后调用 onFlushDirty?

计划我正在使用Hibernate为一个小项目实现createDate和lastUpdate时间戳。我使用EmptyInterceptor并根据我发现的建议解决方案重载提供的方法here.除非有一点细节,否则该解决方案工作正常。我想添加一个列来指示对象是否已经更新。我知道我可以通过简单地比较两个创建和更新的时间戳是否存在差异来实现这一点,但我需要让这个字段指示有一个更新。我使用在存储新对象时调用的onSave方法将wasUpdated值设置为“N”,表示没有更新。在onFlushDirty()方法中,我将此值设置为“Y”。问题当我创建并持久化一个新对象时,我会指出createDate和l

java - hibernate 覆盖 "lazy=false"

我正在现有项目中开发一个新模块。该项目已经有一个用户表,一个pojo和一个对应的映射文件。问题是他们通过提及lazy="false"急切地获取所有属性。但是,在我的模块中,我在一个请求中进行了大量的读写操作,所以我不想急切地获取。我想知道的是,是否可以为同一个表和同一个pojo创建另一个映射文件来延迟加载所有属性?我已尝试为映射文件分配不同的实体名称,但在部署时,我收到错误消息“实体映射中的重复列”。我看到了this回答,但它说“不映射child”,那么我将如何获得代理? 最佳答案 这是使用EAGER抓取作为默认策略的一大缺点。通常

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