草庐IT

java - jpa查询中加入和路径导航的区别

我有以下2个实体:classUser{privateStringname;privateUserTypeuserType;}classUserType{privateStringname;}我想获取用户类型名称等于“admin”的所有用户。我可以编写以下2个返回相同结果的查询。selectufromUseruwhereu.userType.name='admin';和selectufromUserujoinu.userTypeutwhereut.name='admin';只是想了解哪种方法更可取,有什么区别。如果我始终可以使用实体之间的导航获得结果,我什么时候要遵循连接方法?

java - 如何使用 "Spring Data JPA"规范进行单元测试方法

我在玩org.springframework.data.jpa.domain.Specifications,它只是一个基本的搜索:publicOptional>rechercheArticle(Stringcode,Stringlibelle){Listresult=null;if(StringUtils.isNotEmpty(code)&&StringUtils.isNotEmpty(libelle)){result=articleRepository.findAll(Specifications.where(ArticleSpecifications.egaliteCode(cod

java - 在 JPA Criteria API 的子查询中使用 ORDER BY 的替代方法是什么?

考虑以下两个表:项目(id,project_name)状态(id、id_project、status_name)其中Status包含Project所处的所有状态。假设我们要查询最新状态名称为“new”的所有项目。我提出的Sql查询是:SELECTq.id_projectFROMstatusqWHEREq.status_namelike'new'ANDq.idIN(SELECTTOP1sq.idfromstatussqWHEREq.id_project=sq.id_projectORDERBYsq.idDESC)我正在尝试使用CriteriaAPI复制上述查询,我​​注意到类Criter

java - 如何将 DTO 映射到现有的 JPA 实体?

我正在尝试将JavaDTO对象映射到现有的JPA实体对象,而无需执行以下操作:publicMyEntitymapToMyEntity(SomeDTOdto,MyEntityentity){entity.setField1(dto.getField1());entity.setField2(dto.getField2());...entity.setField20(dto.getField20());returnentity;}到目前为止,我一直在使用ModelMapper像这样:MyEntityentity=modelMapper.map(dto,SomeDTO.class);,但我想

java - JPA:我应该使用 orm.xml 清理我的实体类吗?

我目前只使用JPA注释,但我真的不喜欢我用这么多与它们的行为无关的ORM细节污染我的实体类(例如表名、id生成策略、连接列...)。我看到了DataNucleusrecommendsputtingORM-relatedannotationsinXMLinstead(那些粉红色的),但我还没有看到任何其他实现推荐这个并且JPA似乎没有将注释分成这两个组(我认为JDO这样做)。有没有人这样使用annotations+orm.xml,体验如何?它会消除我的实体类中的一些污染,还是会遇到问题? 最佳答案 我们半定期面临的最大问题是,如果您想

java - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http ://www. springframework.org/schema/data/jpa]

任何想法,可能导致此错误的原因是什么?org.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configurationproblem:UnabletolocateSpringNamespaceHandlerforXMLschemanamespace[http://www.springframework.org/schema/data/jpa]Offendingresource:ServletContextresource[/WEB-INF/spring/appServlet/servlet-co

java - 如何使用 Java JPA 加载初始数据(或种子数据)?

我有一个JPA项目,我想插入一些关于开发的初始数据,这样我就可以轻松检查一切是否顺利运行。我的研究使我找到了使用直接SQL脚本的唯一解决方案,但那是不对的。如果我使用框架来抽象数据库详细信息,为什么我要为特定数据库创建脚本?在ruby​​onrails世界中,我们有命令“rakedb:seed”,它简单地执行一个名为seed.rb的文件,该文件具有在调用抽象层的数据库上添加初始数据的功能。Java上有类似的东西吗?我能想到的理想解决方案是执行一个将执行java类的maven目标,有没有简单的方法或maven插件来做到这一点? 最佳答案

java - 使用 PostgreSQL,为什么 Hibernate/JPA 不创建级联约束?

我有一个实体Bar:@OneToMany(cascade=CascadeType.ALL,mappedBy="bar")privateSetfooSet;还有一个实体Foo:@ManyToOne(optional=false)@JoinColumn(name="bar_id")privateBarbar;Hibernate在foo.bar->bar.id上创建外键约束,但它没有指定ONDELETECASCADE。为什么不?有什么方法可以实现吗?或者,我可以在数据库中手动添加ONDELETECASCADE(并禁用DDL生成),这是一个好的做法吗?而且,我是否必须修改我的代码以某种方式让H

java - 具有分离的 DAO 和服务层的 EJB 的 JPA

这更多是我目前遇到的架构问题。我需要有关在项目中集成EJB和JPA的最佳实践的帮助。我想要EJB来完成服务层的工作,其中包含我的应用程序的业务逻辑。就在那之下,我想要一个DAO层,我的EJB将有一个句柄,使用DAO工厂尽可能地分离这两个层。知道了这一点,我显然也不能将我的DAO作为EJB,因为我不希望它们自动注入(inject),因为我希望它们通过工厂创建。这导致我使用手动创建实体管理器Persistence.createEntityManagerFactory("PortalEJB").createEntityManager();现在...这个调用位于我的抽象JPADAO中:publ

java - JPA 惰性列表上的流

我的JPA实体的列表如下:@OneToMany(mappedBy="scadaElement",orphanRemoval=true)privateListelementParameters;和map形式ElementParameter@ManyToOne@JoinColumn(name="SCADAELEMENT_ID")ScadaElementscadaElement;当我使用elementParameters列表获取实体并在其上进行流式传输时,即使我使用.size()触发列表,但当我使用for循环执行相同操作时,它仍然有效。System.out.println("elements