从Hibernate3升级到4后,我们正在解决沿途出现的一些问题。一个让我们特别难过的是UnsupportedOperationException,其中现有对象从数据库中提取、调整和合并。问题是Hibernate似乎正在将对象添加到AbstractList当保存在我们的DAO中时,这似乎只发生在一种特定的对象类型上,但据我们所知:我们没有使用任何会导致创建不可变实例的sublist()或asList()方法。检查正在保存的对象(它很大并且有很多子项)我认为它的任何子项都不是AbstractList类型。以下是堆栈点周围的代码片段:HibernateDao.save():@Transac
我正在尝试检测和优化Java/Hibernate应用程序中的低效连接。我注意到在某些情况下,由于在结果集中处理连接的方式的性质,在线数据流效率非常低。让我举个例子。假设您有一个如下所示的HQL查询:selectsfromStoresleftjoinfetchs.itemsileftjoinfetchs.employeeseleftjoinfetchs.customerscwheres.id=:id(暂时忽略这不是一个智能查询-这只是一个简化的示例)。如果您想象一家给定的商店有1000件商品、10名员工和100名顾客,您将得到一个包含1111个实体的Java对象树。这可能会让您误以为从数
这似乎经常出现,但我用谷歌搜索无济于事。假设您有一个Hibernate实体User。您的数据库中有一个ID为1的User。您有两个线程在运行,A和B。它们执行以下操作:A获取用户1并关闭其SessionB获取用户1并删除它A更改用户1的字段A得到一个新的Session并合并的用户1我所有的测试都表明merge试图在数据库中找到用户1(显然不能),因此它插入了一个ID为2的新用户。另一方面,我的期望是Hibernate会发现被合并的用户不是新用户(因为它有一个ID)。它会尝试在数据库中找到用户,这会失败,因此它不会尝试插入或更新。理想情况下,它会抛出某种并发异常。请注意,我正在通过@Ve
有应用spring+jpa+envers(hibernate)envers需要将实体的历史保存在特殊的表中。在我保存了几次我的实体之后,我希望看到USER表中的填充版本字段和USER_AUT中的填充版本字段。但实际结果在USER表中是正确的值,但在版本列中添加了REV_TYPE、REV列(在字段中只是couter的所有行)和null。我用的是4.0.1.Finalhibernateorg.hibernatehibernate-envers4.0.1.Finalorg.hibernatehibernate-entitymanager4.0.1.Final但是,当我查看表时,Version
将我的头撞在墙上几个小时也无法解决这个问题,这似乎是我的配置设置错误,或者可能是依赖冲突或缺少依赖。有什么想法吗?相关依赖:SpringDataCommonsCore1.2.0SpringDataJPA1.8.0HibernateCore5.0HibernateJPA2.1Eclipse中的错误信息:Configurationproblem:Failedtoimportbeandefinitionsfromrelativelocation[SpringDbContext.xml]Offendingresource:classpathresource[SpringAppContext.x
您好,我有如下2个表格表1:+-------------------+|IDLOBcol1col2|+-------------------+PrimaryKey(IDandLOB)Table2:+-----------------+|SKIDcol3col4|+-----------------+PrimaryKey(SK)Ineedtogiveamanytoonerelationfromtable2totable1,sincetable1hascompositePrimaryKey(IDandLOB)buttable2doesnothaveanycolumnrelatedtoLOB
我们将我们的应用程序从一个自己的小型日志记录组件转移到Log4j2。该应用程序在我们最大的安装中每天运行大约60.000个作业。我们编写自己的Appender,它使用Hibernate写入我们的数据库(请参阅InnovaIntegrationsportalHibernateAppender)。在大约36小时的运行时间后,JVM因内存不足异常/错误(OOME)而崩溃,分析hprof我看到类org.apache.logging.log4j.core的数量为763,5MB。appender.AbstractManager查看附件的分析截图(2019-04-1213_20_45-eclips.
我有两个类,比如Group和Person,它们具有在JoinTable中映射的多对多关系。如果我删除一个与组有关系的人,我想从连接表中删除条目(而不是删除组本身!)。我必须如何定义级联注释?我没有找到真正有用的文档,但有几个Unresolved董事会讨论...publicclassGroup{@ManyToMany(cascade={javax.persistence.CascadeType.?},fetch=FetchType.EAGER)@Cascade({CascadeType.?})@JoinTable(name="PERSON_GROUP",joinColumns={@Joi
我需要使用@OrderBy(JPA,Hibernate作为提供者)对嵌套属性的集合进行排序:@OneToMany(mappedBy="paramSpec",cascade=CascadeType.ALL)@OrderBy("release.ordinal")privateListpkdbParams;在PkdbParameter.java中:...@ManyToOne@JoinColumn(name="release_id")privateReleaserelease;...在Release.java中:...privateintordinal;...(所有这些字段都提供了简单的get
是否可以阻止hibernate自动更新持久对象?@TransactionalpublicResultTOupdateRecord(RequestTOrequestTO){Entityentity=dao.getEntityById(requestTO.getId());//nowupdatetheentitybasedonthedataintherequestTOValidationResultvalidationResult=runValidation(entity);if(validationResult.hasErrors()){//returnResultTOwithvalid