草庐IT

Hibernate

全部标签

java - 有没有办法将 Postgres 的 UUID 生成与 Hibernate 的 IDENTITY ID 生成策略结合使用?

我正在使用SpringBoot1.4.1,其中包括Hibernate5和Postgres9.6,我正在尝试创建一个具有UUIDID的实体,但使用的是Postgres的UUID生成而不是Hibernate的。很多类似的问题都说要设置columntype为pg-uuid。这似乎适用于非数据库生成的ID列,但是当我尝试将它用于ID列时,我得到了org.hibernate.id.IdentifierGenerationException:无法识别的ID类型:pg-uuid->java.util.UUID所以看起来Hibernate正确地应用了类型,但没有转换它。以下是我的实体的ID列的设置方式

java - get 在没有 Activity 事务的情况下无效 - hibernate 5

即使我已手动启动交易,我仍不断收到此错误。Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();transaction=session.getTransaction();if(!transaction.isActive()){transaction=session.beginTransaction();}accessToken=session.get(OAuthAccessToken.class,token);hibernate.cfg.xmltrue520300503000org.hibernate.

java - 如何使用 Hibernate Validator 来验证表中多行的日期范围?

我有一个自定义validator,我用它来确保在保存实体之前将某些业务规则应用于实体。例如(假设的),当保存下面定义的ProductPrice时,我验证给定产品(由productId标识)的fromDate和endDate与现有没有重叠数据库中该产品的code>ProductPrice行。@MyCustomValidatorclassProductPrice{LongproductId;DatefromDate;DatetoDate;}只要将ProductPrice保存为单个实体,这就可以正常工作。一旦该实体被添加为另一个实体中的一对多关系,如下所示,classProduct{List

Java:Hibernate 看不到 DataBase 的变化

我有两个共享同一个数据库的不同应用程序。问题是当我有一个应用程序更改数据库中的某些内容时,另一个应用程序不会更新。我尝试制作一个session.flush()但它没有用。唯一的方法是关闭整个session并重新创建它,但这当然需要很长时间。 最佳答案 简答:每次你想显示某个对象时发出一个session.refresh(obj)。它将强制Hibernate转到数据库。另一种解决方案是使用StatelessSession,它不会缓存任何内容(甚至一级缓存也不缓存),每次需要记录时都会强制您的应用程序访问数据库:http://docs.j

java - Hibernate Session 方法 saveOrUpdate() 和 merge() 之间有什么区别?

Hibernate之间有什么区别?Session方法saveOrUpdate(Object)和merge(Object)?似乎这两种方法都会生成一个SQLINSERT当给定对象在相应表中不存在时的语句和UPDATE当它确实存在时。 最佳答案 尽管这是针对NHibernate的,但它也适用于Hibernate:NHibernate-Differencebetweensession.Mergeandsession.SaveOrUpdate? 关于java-HibernateSession方法

java - 是否应避免 Hibernate 双向关联?

在基于Spring/Hibernate的项目中,两个实体之间存在一对多关系。所需的操作是:找到child的parent;找到parent的child;当父级被移除时,我们也需要移除子级;批量创建child。我们提出了两种实现方法。Bidirectionalassociation:子实体有@ManyToOne列将其链接到父实体,父实体有@OneToMany延迟加载的子实体集合。以上所有操作都可以在模型中进行:child.getParent();parent.getChildren();//lazyloadingsession.delete(parent);//cascaderemoval

java - 如何在 Hibernate 中从非实体子类中持久化实体

我正在尝试将实体扩展为用于填充父类(superclass)字段的非实体。问题是,当我尝试保存它时,Hibernate会抛出MappingException。这是因为即使我将ReportParser转换为Report,运行时实例仍然是ReportParser,因此Hibernate会提示它是一个未知实体。@Entity@Table(name="TB_Reports")publicclassReport{Longid;Stringname;Stringvalue;@Id@GeneratedValue@Column(name="cReportID")publicLonggetId(){ret

java - 在 Hibernate QL 中否定一元运算符

我正在尝试使用以下hql切换boolean字段:updateEntityesete.booleanField=note.booleanFieldwheree.id=?1;不幸的是,抛出“QuerySyntaxException:意外标记:不在附近……”。我的问题是:hibernate是否有一些支持这种表达式的一元运算符?或者任何众所周知的技巧?sql支持这样的查询(postgresql):updateentity_tablesetbooleanField=not(booleanField); 最佳答案 要切换boolean属性,相当

java - Hibernate 检查集合中所有元素是否相等

我有两个实体,即Person和Activity。Activity具有属性状态,Person实体包含Activity集合。我想获得所有Activity状态为“完成”的人员列表。Criteriacrit=s.createCriteria(Person.class);crit.createAlias("activities","act").add(Restrictions.eq("act.status","Done"));但这会返回所有对象,其中至少有一个状态为完成的Activity。我想检索所有Activity状态都设置为“完成”的人员列表。谁能帮帮我? 最佳答

java - JPA:覆盖自动生成的 ID

这个问题在这里已经有了答案:BypassGeneratedValueinHibernate(mergedatanotindb?)(8个答案)关闭4年前。我在Employee类中有以下定义@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="employee_id")privateIntegeremployeeId;现在我想导入具有现有员工ID的现有员工。即使我在保存之前设置了员工ID,分配的ID也会被忽略,并存储自动递增的ID。我们如何覆盖它?我对复合键有类似的问题,这已得到解释here