调用EntityManager.flush()时,会不会也flush二级缓存?我尝试了谷歌搜索,也尝试了刷新它,看起来确实如此,但最好能确认一下。编辑:现在好像没有刷新二级缓存。 最佳答案 JPA没有二级缓存的概念(它不是规范的一部分)。所以二级缓存的行为完全取决于JPA提供者。您使用的是什么Hibernate、EclipseLink、OpenJPA?更新:我支持部分更正,JPA2.0引入了一些选项来控制二级缓存的使用(如@Cachable) 关于java-调用EntityManager
我正在使用hibernate自动创建一些postgres数据库表。现在我想将其中一张table移动到不同的位置(硬盘驱动器)。这是使用表空间完成的。问题:如何为@Entity定义表空间?这可能吗? 最佳答案 从4.3.9版本开始,Hibernate中不再支持tablespaces,这让您有两个选择:您可以自定义hbmddl生成以将tablespace包含为previouslysuggested.你放开hbmddl并简单地使用你自己的incrementaldatabaseschema一代。FlywayDB既简单又强大,您可以最大程度地
我正在尝试使用SpringJPA的示例来进行搜索。有了下面的代码,大部分都符合要求。publicPagefindShops(Shopcondition,Pageablepageable){ExampleMatchermatcher=ExampleMatcher.matching().withStringMatcher(StringMatcher.CONTAINING).withIgnoreCase();returnshopDao.findAll(Example.of(condition,matcher),pageable);}此外,我只需要状态不等于DELETED的SHOP。比如,.w
我没有成功为我的JPA应用程序设置CET时区,该应用程序使用AuditingEntityListener来增加创建/上次修改日期。我已经尝试过的事情:在我的application.properties(两种组合)中:spring.jpa.properties.hibernate.jdbc.time_zone=UTC+1spring.jpa.properties.hibernate.jdbc.time_zone=CET将时区添加到我的JDBC连接(两种组合)spring.datasource.url=jdbc:mysql://host:3306/db?useUnicode=true&us
我有一个@ManyToMany映射,其中表通过映射表自引用,我们想根据实际映射表中的订单ID进行订购,但发现很难配置它。我们可以在hibernatexml中执行它,因此很自然地假设支持在JPA注释中存在。有人知道我们如何对映射表中的值进行排序吗?表格是:wap_site_componentsintidstrnameintcomponentdefdtmcreatedintcustomer而自引用的映射表是:wap_site_component_relationsintidintparent(referencesintidinwap_site_components)intchild(ref
我想为Hibernate(版本1.1.1-Final)(在Spring应用程序中)使用JPA2元模型生成器。因为我使用一个映射父类(superclass),它是所有实体的基础,并且这个类位于不同的jar中(为了重用)我需要在XML中显式映射这个类(仅用于元模型生成,因为它有效没有任何额外的时间)---可能有人会提示如何解决这个问题,但这不是问题。此映射的父类(superclass)(BusinessEntity)使用嵌入式类(BusinessId)。@SuppressWarnings("serial")@MappedSuperclasspublicabstractclassBusine
我想在交易失败后恢复。现在,当然,在任何回滚之后,所有实体都会分离并且实体管理器会关闭。但是,UI仍然保留分离的实体。显然我们不能就这样丢弃用户的更改,所以我们想让他们重试(修复突出显示的验证错误,然后再次单击按钮)。在JavaPersistenceWikiBook之后,OnemethodoferrorhandlingistocallmergeforeachmanagedobjectafterthecommitfailsintoanewEntityManager,thentrytocommitthenewEntityManager.Oneissuemaybethatanyidsthat
我正在使用SpringDataJPA,这很奇怪,但它会尝试扫描(在部署期间)测试文件,这会导致错误:java.lang.ClassNotFoundException:org.junit.runner.RunWithatorg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)atorg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)...WARN:org.springf
我正在实现基于实体属性值的持久性机制。所有数据库访问都是通过Hibernate完成的。我有一个包含节点路径的表,它非常简单,只有一个id和一个路径(字符串)路径数量很少,大约几千条。主表有数百万行,我没有重复路径,而是将路径标准化为它们自己的表。以下是插入主表时我想要的行为1)检查路径表中是否存在路径(通过实体管理器查询,以路径值为参数)2)如果不存在,则插入并获取id(通过实体管理器持久化)3)将id作为外键值添加到主表行中,并将其插入到主表中。对于一组域对象,这将发生数千次,这些域对象对应于主表和其他一些表中的许多行。因此,使用这样的单个事务重复上述步骤:EntityTransac
我们在我们的应用程序中使用了JSF、Spring和JPA。我们正努力简化我们项目的异常处理策略。我们的应用架构如下:UI(JSF)-->托管Bean-->服务-->DAO我们正在为DAO层使用ExceptionTranslationbean后处理器。这是在SpringApplicationContext文件中配置的。其中Spring将所有数据库异常包装到'org.springframework.dao.DataAccessException'。我们没有在DAO层中进行任何其他异常处理。我们处理异常的策略如下:表示层:ClassPresentationManangedBean{try{s