Tag: spring data jpa

我不能在我的代码中使用findOne()方法

我的应用程序中有错误,因为我使用了findOne()方法。 在我的简单代码下面。 在User类中,我的id是String email,而我正在尝试在我的类UserService中使用id,如下所示: public User findUser(String email){ return userRepository.findOne(email); } 但我有这个错误: 接口org.springframework.data.repository.query.QueryByExampleExecutor中的方法findOne不能应用于给定的类型; 必需:org.springframework.data.domain.Example 发现:java.lang.String 原因:无法推断类型变量S(参数不匹配; java.lang.String无法转换为org.springframework.data.domain.Example) 用户类: @Entity @Data @Table(name = “User”) public class User { @Id @Email @NotEmpty @Column(unique = true) private String email; @NotEmpty private String name; @NotEmpty @Size(min = 5) private String password; @OneToMany(mappedBy = “user”, cascade = CascadeType.ALL) private List […]

Spring启动+ Spring数据JPA +二级缓存给出mutate错误

我正在使用Spring Boot和Spring数据JPA获得多个数据源的应用程序。 我得到以下exceptionhibernate.cache.region.factory_class没有设置,虽然我在代码中设置它。 Spring Boot在我设置之前检查它,或者无法读取我的设置。 caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given; please either disable second level cache or set correct region factory using the hibernate.cache.region.factory_class setting and make sure the second level cache provider (hibernate-infinispan, eg) is available on the classpath. at org.hibernate.cache.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:83) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:364) […]

Spring Data JPA Repositories:是否可以给params一个默认的Value / default all?

因此,简而言之:是否可以将参数设置为“default:All”或更一般地将其设置为Spring Data JPA(可能是@ Query-Annotated)存储库方法中的默认特定值? 我知道在(Rest)控制器中设置默认值是可能的,我只是好奇它是否可以在Repository-Level中进行。 我认为可能是一个很好的function,因为“让我得到一些过滤结果集,其中filter可能没有在前端通过rest调用设置filter”是一个非常常见的用例。 例如查询: @Query(“select new com.my.dto(e.name, e.age, e.address)” + ” from Entity e” + “where e.name like ?1 ” + “and e.age like ?2 ” + “and e.street like ?3”) List findItemsFiltered(String name, String age, String street); 因此,当我们说没有设置street时,存储库应该使用“%”来返回其他条件匹配但街道不相关的所有结果。

Spring Data REST – @PrePersist和@HandleBeforeCreate之间的区别?

我在JPA映射上使用Spring Data Rest 。 JPA为在DB中实体的持久性之前调用的方法提供@PrePersist注释。 Spring Data Rest为捕获实体创建事件时要调用的方法提供@HandleBeforeCreate注释。 这似乎与我相当。 我何时应该使用另一个?何时应该使用另一个?

在Spring数据JpaRepository方法问题中的Pageable和@Param

我有一个以下的存储库: public interface MilestoneRepository extends JpaRepository { @Query(“select m from Milestone m where m.date <= :date order by m.date desc") Page findLeftClosest(@Param(“date”) Date date, Pageable pageable); } 定义如上所述工作正常,但如果我切换参数顺序: public interface MilestoneRepository extends JpaRepository { @Query(“select m from Milestone m where m.date <= :date order by m.date desc") Page findLeftClosest(Pageable pageable, @Param(“date”) Date date); } 我在上下文初始化时遇到以下exception(发布最有趣的底层原因): […]

如何使用Spring Data / JPA插入Postgres Array类型列?

假设我有一个像这样的postgres表: CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); 我甚至可以使用Spring Data插入pay_by_quarter列或schedule吗? 如果可能的话,它将如何看作存储库和实体? 我无法找到解决此问题的任何文档或示例,可能是因为它与更常见的用例重叠,如同一对多关系插入多个表。 说到这一点,我完全打算使用Postgresql array数据类型而不使用关系表。

JPQL喜欢Case Insensitive

我想在用户表中按名称不区分大小写搜索数据。 @Repository public interface UserRepository extends JpaRepository { @Query(“select u from User u where lower(u.name) like %lower(?1)%”) public List findByNameFree(String name); } 我收到一个错误: 意外的令牌:% 。 我应该在哪里放’%’?

可选isPresent vs orElse(null)

我在我的项目中更新了Spring 8的依赖项,并被编译错误轰炸,其中findOne()的方法定义已被findById()替换,现在返回一个Optional (如果我错了,请纠正我)。 在重构的过程中,我遇到了多种我可以选择采用的方法,因此我想要一些关于哪一种是首选的输入。 第一种方法: ExpectedPackage ep = expectedPackageRepository.findById(1).orElse(null); if(ep != null){ ep.setDateModified(new Date()); expectedPackageRepository.saveAndFlush(ep); } 第二种方法: Optional ep = expectedPackageRepository.findById(1); if(ep.isPresent()){ ep.get().setDateModified(new Date()); expectedPackageRepository.saveAndFlush(ep.get()); } 或者,我错过了第三种更好的方法吗? 我经历了几个问题和几篇文章,但我没有找到明确的答案。

Spring Data JPA:创建一个抽象存储库

鉴于以下类别: @MappedSuperclass @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) @DiscriminatorColumn(name=”animalType”,discriminatorType=DiscriminatorType.STRING) @QueryExclude public abstract class Animal {} @Entity @DiscriminatorValue(“dog”) public class Dog {} @Entity @DiscriminatorValue(“cat”) public class Cat {} 有可能以某种方式为Animal配置JPA存储库吗? 我试过了 public interface AnimalRepository extends JpaRepository 然而,这失败了: java.lang.IllegalArgumentException:不是托管类型:Animal 有没有办法配置这个? 我希望能够执行以下任务: @Autowired private AnimalRepository repository; public void doSomething() { Animal animal = repository.findById(123); animal.speak(); }

Spring数据JPA和可以为null的参数

我的理解是,使用Spring数据JPA我不能有一个查询方法来获取列等于给定的非null方法参数的所有行,并且当method参数为null时,使用相同的方法获取此列为NULL的所有行。 那是对的吗? 所以我必须在我的JAVA代码中区分它,我必须使用一个单独的查询方法明确要求空值,如下例所示? // Query methods List findByParameter(Parameter parameter); List findByParameterIsNull(); … List result = new ArrayList(); if (parameter == null) result = findByParameterIsNull(); else result = findByParameter(parameter); 这很糟糕,如果我有4个参数可以为null并且必须编码16种不同的查询方法。