Tag: spring data jpa

查询方法public abstract java.util.List的validation失败

我有一个基本的SpringBoot应用程序。 使用Spring Initializer,JPA,嵌入式Tomcat,Thymeleaf模板引擎和包作为可执行的JAR文件。 SpringBoot的版本是2.0.1.RELEASE。 我已经创建了一个使用此方法从CrudRepository扩展的类存储库 @Query(“select us.priceAlertsTapas.tapa from User us left join us.priceAlertsTapas pat left join pat.tapa tapa where pat.priceAlert = ?1”) List tapasByUserPriceAlert (PriceAlert pa); 但是当我启动项目时,我收到了这个错误: Validation failed for query for method public abstract java.util.List at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:93) at org.springframework.data.jpa.repository.query.SimpleJpaQuery.(SimpleJpaQuery.java:63) at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:76) at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:56) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:139) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:206) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:79) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lookupQuery(RepositoryFactorySupport.java:553) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(RepositoryFactorySupport.java:546) at […]

如何使用Spring Data JPA查询Map值?

所以我的数据库模型是这样的:我有Store ,每个Store都有一个本地化的名称。 所以我选择将本地化名称表示为这样的Map : public class Store { private Map name; } 你可以看到它是的Map,其中LocalizedValue是这样的类: @Embeddable public class LocalizedValue { @Column(name = “value”) private String value; } 这一切都很棒。 但是我遇到了一个问题,我想查询我的Spring Data JPA存储库并查找具有给定英文名称的所有商店。 所以我的存储库方法如下所示: Store findByName(Map.Entry name); 但它抛出了这个exception: 2014-10-07 23:49:55,862 [qtp354231028-165] ERROR: Parameter value [en=Some Value] did not match expected type [com.test.LocalizedValue(n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [en=Some […]

@PreUpdate不适用于Spring Data JPA

我有一个实体: @Entity @EntityListeners(MyEntityListener.class) class MyEntity{ … } 而听众: class MyEntityListener{ @PrePersist @PreUpdate public void doSomething(Object entity){ … } } 我正在为此实体(1.4.1)和EclipseLink使用Spring Data生成的DAO。 代码行为如下: MyEntity entity = new Entity(); entity = dao.save(entity); // the doSomething() is called here // change something it the entity and save it again dao.save(entity); // the doSomething() is NOT called here, checked […]

如何在Spring Boot中实现Generic JPA Repository – 可以为任何实体/类类型自动连接到spring服务

以下是扩展Spring PagingAndSortingRepository的示例Generic Repository实现, @NoRepositoryBean public interface GenericRepository extends PagingAndSortingRepository { public List findByNamedQuery( String name ); public List findByNamedQueryAndParams( String name, Map params ); public T findOneByNamedQuery( String name ); public T findOneByNamedQueryAndParams( String name, Map params ); } 工厂Bean类, public class GenericRepositoryFactoryBean<R extends JpaRepository, T, I extends Serializable> extends JpaRepositoryFactoryBean { @SuppressWarnings( “rawtypes” ) […]

spring data jpa limit pagesize,如何设置为maxSize

我有一个要求是通过可分页和不可分页搜索, 在我的Java代码中,我使用spring数据jpa Pageable类, Pageable pageable = new PageRequest( queryForm.getPageNumber()- 1, queryForm.getPageSize(),Sort.Direction.ASC,”id”); Page page = repository.fullTextSearch(queryForm.getText(), pageable); 而且我不想改变回归结构, 那么当不可分页的情况(搜索全部)时,如何将pageSize值设置为MAX?

在Spring启动应用程序中未在多个数据库中创建表

我正在开发spring boot多租赁应用程序。 我已经配置了多个数据源,如下所示: application.properties spring.multitenancy.datasource1.url=jdbc:mysql://localhost:3306/db1 spring.multitenancy.datasource1.username=root spring.multitenancy.datasource1.password=**** spring.multitenancy.datasource1.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.multitenancy.datasource2.url=jdbc:mysql://localhost:3306/db2 spring.multitenancy.datasource2.username=root spring.multitenancy.datasource2.password=**** spring.multitenancy.datasource2.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.multitenancy.datasource3.url=jdbc:mysql://localhost:3306/db3 spring.multitenancy.datasource3.username=root spring.multitenancy.datasource3.password=**** spring.multitenancy.datasource3.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update DataSourceBasedMultiTenantConnectionProviderImpl.java @Component public class DataSourceBasedMultiTenantConnectionProviderImpl extends AbstractDataSourceBasedMultiTenantConnectionProviderImpl { private static final long serialVersionUID = 8168907057647334460L; private static final String DEFAULT_TENANT_ID = “tenant_1”; @Autowired private DataSource dataSource1; @Autowired private DataSource dataSource2; @Autowired private DataSource dataSource3; private Map […]

使用@WebMvcTest获取“必须至少存在一个JPA元模型”

我是Spring的新手,试图为@Controller做一些基本的集成测试。 @RunWith(SpringRunner.class) @WebMvcTest(DemoController.class) public class DemoControllerIntegrationTests { @Autowired private MockMvc mvc; @MockBean private DemoService demoService; @Test public void index_shouldBeSuccessful() throws Exception { mvc.perform(get(“/home”).accept(MediaType.TEXT_HTML)).andExpect(status().isOk()); } } 但我得到了 java.lang.IllegalStateException:无法加载ApplicationContext 引起:org.springframework.beans.factory.BeanCreationException:创建名为’jpaMappingContext’的bean时出错:init方法的调用失败; 嵌套exception是java.lang.IllegalArgumentException:必须至少存在一个JPA元模型! 引起:java.lang.IllegalArgumentException:必须至少存在一个JPA元模型! 与发布此错误的大多数人不同, 我不想为此使用JPA 。 我试图错误地使用@WebMvcTest吗? 我怎样才能找到邀请JPA加入这个派对的Spring魔法?

Spring Data JPA + JpaSpecificationExecutor + EntityGraph

(使用Spring Data JPA)我有两个实体Parent & Child ,它们之间具有OneToMany / ManyToOne双向关系。 我将@NamedEntityGraph添加到父实体,如下所示: @Entity @NamedEntityGraph(name = “Parent.Offspring”, attributeNodes = @NamedAttributeNodes(“children”)) public class Parent{ //blah blah blah @OneToMany(mappedBy = “parent”, fetch = FetchType.LAZY) Set children; //blah blah blah } 请注意,Parent的子项的获取类型是LAZY。 这是故意的。 当我查询个别父母时,我并不总是希望加载孩子。 通常我可以使用我的命名实体图来按需加载孩子,可以这么说。 但….. 有一种特殊的情况,我想查询一个或多个父母,并急切地加载他们的孩子。 除此之外,我还需要能够以编程方式构建此查询。 Spring Data提供了JpaSpecificationExecutor ,它允许我们构建动态查询,但在这种特定情况下,我无法弄清楚如何将它与实体图一起用于急切加载子项。 这有可能吗? 有没有其他方法可以使用规范急切加载到许多实体?

如何在具有复合PK的实体中使用“findBy”(Hibernate JPA)

我正在学习bootspring。 findByDate(int date); 过去工作,直到我将int Date移动到内部类。 现在我可以保存新条目,但是我无法通过日期对它们进行检索 我需要改变什么? @Transactional public interface ExpirationDAO extends JpaRepository { public ExpirationDTO findByDate(int date); } 和 @Embeddable public static class IdKey implements Serializable{ @NotNull int date; @ManyToOne ProductDTO product; public IdKey(){ } //setters and getters } @EmbeddedId private IdKey id; @NotNull int units; public ExpirationDTO(){ } //setters and getters } 抛出此exception: […]

参数绑定的名称不能为null或为空! 对于命名参数,您需要在Java版本上使用@Param作为查询方法参数

这已经发布过,但我的问题有点不同。 这是有问题的JPQL查询: @Query(“SELECT NEW com.htd.domain.ShopOrder(po.id, po.po_number, ” + “po.due_date, po_part.id, po_part.part_quantity, ” + “part.id, part.part_number, part.part_description, ” + “part.plasma_hrs_per_part, part.grind_hrs_per_part, ” + “part.mill_hrs_per_part, part.brakepress_hrs_per_part) ” + “FROM Po po ” + “LEFT JOIN po.partList po_part ” + “LEFT JOIN po_part.part part ” + “LEFT JOIN po_part.part where po.id = :id”) List getShopOrder(long id); 现在我确实尝试过: @Query(“SELECT […]