hibernate-entitymanager
全部标签 我正在使用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列的设置方式
即使我已手动启动交易,我仍不断收到此错误。Sessionsession=HibernateUtil.getSessionFactory().getCurrentSession();transaction=session.getTransaction();if(!transaction.isActive()){transaction=session.beginTransaction();}accessToken=session.get(OAuthAccessToken.class,token);hibernate.cfg.xmltrue520300503000org.hibernate.
我有一个自定义validator,我用它来确保在保存实体之前将某些业务规则应用于实体。例如(假设的),当保存下面定义的ProductPrice时,我验证给定产品(由productId标识)的fromDate和endDate与现有没有重叠数据库中该产品的code>ProductPrice行。@MyCustomValidatorclassProductPrice{LongproductId;DatefromDate;DatetoDate;}只要将ProductPrice保存为单个实体,这就可以正常工作。一旦该实体被添加为另一个实体中的一对多关系,如下所示,classProduct{List
我有两个共享同一个数据库的不同应用程序。问题是当我有一个应用程序更改数据库中的某些内容时,另一个应用程序不会更新。我尝试制作一个session.flush()但它没有用。唯一的方法是关闭整个session并重新创建它,但这当然需要很长时间。 最佳答案 简答:每次你想显示某个对象时发出一个session.refresh(obj)。它将强制Hibernate转到数据库。另一种解决方案是使用StatelessSession,它不会缓存任何内容(甚至一级缓存也不缓存),每次需要记录时都会强制您的应用程序访问数据库:http://docs.j
Hibernate之间有什么区别?Session方法saveOrUpdate(Object)和merge(Object)?似乎这两种方法都会生成一个SQLINSERT当给定对象在相应表中不存在时的语句和UPDATE当它确实存在时。 最佳答案 尽管这是针对NHibernate的,但它也适用于Hibernate:NHibernate-Differencebetweensession.Mergeandsession.SaveOrUpdate? 关于java-HibernateSession方法
在基于Spring/Hibernate的项目中,两个实体之间存在一对多关系。所需的操作是:找到child的parent;找到parent的child;当父级被移除时,我们也需要移除子级;批量创建child。我们提出了两种实现方法。Bidirectionalassociation:子实体有@ManyToOne列将其链接到父实体,父实体有@OneToMany延迟加载的子实体集合。以上所有操作都可以在模型中进行:child.getParent();parent.getChildren();//lazyloadingsession.delete(parent);//cascaderemoval
我正在尝试将实体扩展为用于填充父类(superclass)字段的非实体。问题是,当我尝试保存它时,Hibernate会抛出MappingException。这是因为即使我将ReportParser转换为Report,运行时实例仍然是ReportParser,因此Hibernate会提示它是一个未知实体。@Entity@Table(name="TB_Reports")publicclassReport{Longid;Stringname;Stringvalue;@Id@GeneratedValue@Column(name="cReportID")publicLonggetId(){ret
我正在尝试使用以下hql切换boolean字段:updateEntityesete.booleanField=note.booleanFieldwheree.id=?1;不幸的是,抛出“QuerySyntaxException:意外标记:不在附近……”。我的问题是:hibernate是否有一些支持这种表达式的一元运算符?或者任何众所周知的技巧?sql支持这样的查询(postgresql):updateentity_tablesetbooleanField=not(booleanField); 最佳答案 要切换boolean属性,相当
我有两个实体,即Person和Activity。Activity具有属性状态,Person实体包含Activity集合。我想获得所有Activity状态为“完成”的人员列表。Criteriacrit=s.createCriteria(Person.class);crit.createAlias("activities","act").add(Restrictions.eq("act.status","Done"));但这会返回所有对象,其中至少有一个状态为完成的Activity。我想检索所有Activity状态都设置为“完成”的人员列表。谁能帮帮我? 最佳答
我们有一个域,其中90%的类都非常简单,可以轻松地在数据库中进行1:1映射。我很高兴Hibernate与spring-data-jpa的结合为这些类消除了大量的琐事。然而,域的其余部分具有挑战性,出于多种原因,我不想将其直接映射到数据库表。我做了实验来引入由Hibernate管理的中间bean并将这些bean映射到我的域,当所有关系都从具有挑战性的部分到容易的部分时,这很有效。当我有由Hibernate管理的“简单”类引用映射到自定义Java代码中的“具有挑战性的”类而不是直接由Hibernate管理时,这种方法失败了。这是当我意识到我无法找到自定义Hibernate和插入某种Obje