Tag: spring data jpa

Spring Data JPA:按示例查询?

使用Spring Data JPA可以通过示例进行查询,其中特定实体实例用作搜索条件吗? 例如(没有双关语),如果我有一个看起来像这样的Person实体: @Entity public class Person { private String firstName; private String lastName; private boolean employed; private LocalDate dob; … } 我可以找到所有在1977年1月1日出生的史密斯姓氏的雇员,举个例子: Person example = new Person(); example.setEmployed(true); example.setLastName(“Smith”); example.setDob(LocalDate.of(1977, Month.JANUARY, 1)); List foundPersons = personRepository.findByExample(example);

如何检测/建议Spring Data(JPA)存储库?

我没有努力建议一个spring data jpa存储库。 目标是检测(围绕)使用自定义注释(在此示例中为ResourceNotFound)注释的特定存储库中的所有非void公共方法,并在返回值为null或空集合时抛出exception。 @Repository @ResourceNotFound @Transactional(readOnly = true) public interface CityRepository extends JpaRepository, JpaSpecificationExecutor { … } 以下建议是连接用@ResourceNotFound注释的接口实现的所有公共方法。 @Pointcut(“within(com.digitalmisfits.spring.aop.annotation.ResourceNotFound *)”) public void beanAnnotatedWithResourceNotFound() {} @Pointcut(“execution(public * *(..))”) public void publicMethod() {} @Around(“beanAnnotatedWithResourceNotFound() && publicMethod()”) public Object publicMethodInsideAClassMarkedWithResourceNotFound(ProceedingJoinPoint pjp) throws Throwable { System.out.println(“publicMethodInsideAClassMarkedWithResourceNotFound ” + pjp.getTarget().toString());; Object retVal = pjp.proceed(); if(((MethodSignature) pjp.getSignature()).getReturnType() != Void.TYPE && […]

无法处理配置类的导入候选项

我有一个Spring Boot项目,我可以在IntelliJ中成功运行,但是当我打包一个可执行jar时,我再也无法运行它了。 这是exception的堆栈跟踪: 18:13:55.254 [main] INFO oscaAnnotationConfigApplicationContext – Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b3d7190: startup date [Wed Sep 07 18:13:55 CEST 2016]; root of context hierarchy 18:13:55.403 [main] WARN oscaAnnotationConfigApplicationContext – Exception encountered during context initialization – cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [el.dorado.App]; nested exception is java.lang.IllegalArgumentException: No auto configuration classes found […]

spring-data-rest发布的自定义jpa存储库方法

我已经在jpa存储库中添加了一个自定义方法,详见http://docs.spring.io/spring-data/data-jpa/docs/1.0.x/reference/html/#repositories.custom-implementations 据我所知,当我使用spring-data-rest时,这个方法不会暴露。 有没有什么办法可以将它作为spring-data-rest生成的REST API的一部分发布(不用自己创建Spring MVC Controller)?

Spring Data JPA:查询ManyToMany

我有实体User和Test @Entity public class User { private Long id; private String userName; } @Entity public class Test { private Long id; @ManyToMany private Set users; } 我可以通过用户实体获得所有测试: public interface TestRepository extends JpaRepository { List findAllByUsers(User user); } 但是我可以使用哪个查询来查找userName所有测试?

使用抽象超类作为Spring数据存储库的参数

我知道spring数据存储库的实现: 创建一个这样的界面: public interface CountryRepository extends CrudRepository {} 现在Country是一个AbstractCatalog目录,我在矿山项目中有很多(很多)目录。 我想知道我是否可以创建一个适用于所有目录的存储库: public interface AbstractCatalogRepository extends CrudRepository {} 现在有了保存,我没有直接看到问题,但如果我想搜索一个AbstractCatalog我已经确定我会碰壁,因为回购不会知道他必须选择什么对象。 AbstractCatalog.class @MappedSuperclass public abstract class AbstractCatalog extends PersistentEntity { /** * The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; /** * The code. */ @Column(unique = true, nullable […]

Spring引用JPA在TABLE中插入大写名称和Hibernate

我有一个表实体映射为: @Entity public class ItemsToRegister implements Serializable{ @Id @Column(name = “ID_ITEM_TO_REGISTER”) @GeneratedValue(strategy = GenerationType.AUTO) private int id; ….. 当我尝试在数据库中插入新记录时,表名被小写翻译为:items_to_register,但我的表名是ITEMS_TO_REGISTER如何在不更改MySql配置的情况下修复我的问题? (my.cnf中) 我在我的application.properties文件中: spring.jpa.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy

Spring Data + JPA具有多个数据源但只有一组存储库

我今天一直在研究这一组,我开始认为我想要做的事情可能是不可能的,所以我转向你,强大的Stackoverflow,寻求帮助。 我正在用Java构建RESTful服务平台,Spring Data 3.1.2 + JPA作为我的持久层(如此处所述 )。 我的数据模型对象都是作为扩展Spring JpaRepository接口的接口实现的。 我已经将所有内容连接起来并且使用单个数据源工作得很好,如本示例所示(请注意,显示的数据源是Derby,但这仅用于开发目的;在生产中,我们将使用Oracle): 问题是该应用程序需要连接到多个(Oracle)数据库。 每个传入请求中包含的凭据将包含一个字段,该字段告知应用程序要转到哪个数据库以满足该请求。 每个数据库的模式都是相同的,因此不需要为每个数据库提供单独的存储库接口。 经过相当数量的谷歌搜索,很明显这是一个常见的情况。 以机智: 使用Spring Data JPA的多个数据库 Spring + Hibernate + JPA +多个数据库 如何使用多个数据源设置spring数据jpa 这是一篇由(前?)Spring开发人员撰写的博客文章,它与手头的主题实际上并不相关,但有人在评论中提出了这个post,作者回复了一些信息: http://blog.springsource.org/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/#comment-198835 似乎正在出现的主题是解决此问题的方法是定义多个EntityManagerFactories,并将每个EntityManagerFactories连接到适当的存储库,如下所示: 但是,正如我所提到的,我希望在所有数据源中重用我的存储库,因此这种方法似乎不起作用。 我知道我的代码中没有任何方法可以从请求中获取相关的信息,并使用它来确定要使用的数据源(或EntityManagerFactory)。 我正在努力的部分是如何获取该数据源/ EntityManagerFactory的句柄并将其“注入”我的存储库对象。 有任何想法吗?

多个jpa:xml配置中的存储库,如何使用Spring java配置使用@EnableJPARepositories进行配置?

我已经研究并找到了关于如何将spring data jpa与多个数据源一起使用的解释和示例代码 ,这些数据源指的是在xml配置中配置多个jpa:repositories,如下所示: 您如何使用java配置和@EnableJpaRepositories注释声明上述两个jpa:存储库配置? 注释似乎只支持一组属性(即仅一个jpa:仅存储库),并且不可能多次声明注释。

具有分页的Spring-Data FETCH JOIN不起作用

我正在尝试使用HQL使用JOIN FETCH获取我的实体和子实体,如果我想要所有结果,这可以正常工作但如果我想要一个页面则不是这样 我的实体是 @Entity @Data public class VisitEntity { @Id @Audited private long id; . . . @OneToMany(cascade = CascadeType.ALL,) private List comments; } 因为我有数百万次访问,我需要使用Pageable,我想在单个数据库查询中获取注释,如: @Query(“SELECT v FROM VisitEntity v LEFT JOIN FETCH v.comments WHERE v.venue.id = :venueId and …” ) public Page getVenueVisits(@Param(“venueId”) long venueId,…, Pageable pageable); 该HQL调用抛出以下exception: Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified […]