【问题标题】:Spring JPA : Validation failed for query for method public abstract methodSpring JPA:方法公共抽象方法的查询验证失败
【发布时间】:2021-08-03 16:33:00
【问题描述】:

应用程序在添加了外部hibernate-core : 5.3.14.Finalspring-boot-starter-data-jpa : 2.4.3 时工作正常。 当我尝试删除外部添加的 hibernate-core 时,它在启动时失败并出现以下错误:

...
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException:
Validation failed for query for method public abstract org.springframework.data.domain.Page
com.my_app.repository.MessageBZCRepository.searchByText(java.lang.String,org.springframework.data.domain.Pageable)!

注意:在内部 spring-boot-starter-data-jpa : 2.4.3 已将 Hibernate ORM core version 5.4.28.Final 添加为依赖项。它在日志和依赖树中显示。

JPA 存储库:

@Repository
public interface MessageBZCRepository extends JpaRepository<MessageBZCEntity, MessageBZCKey>, Searchable<MessageBZCEntity> {

    ...

    @Override
    @EntityGraph(attributePaths = "messageEntity.applicationParameter")
    @Query("select x from MessageBZCEntity x where x.messageEntity.comments like ?1 or x.messageEntity.applicationParameter.parameterName like ?1 or x.zipCode like ?1 or x.userUpdated like ?1")
    Page<MessageBZCEntity> searchByText(String searchText, Pageable pageable);

    ...

}

我发现从上述查询中删除 or x.messageEntity.applicationParameter.parameterName like ?1 会从应用程序启动日志中删除 IllegalArgumentException 并且应用程序可以正常启动。

实体:

@Entity
@Table(name = "MSG_Z")
@IdClass(MessageBZCKey.class)
public class MessageBZCEntity implements Serializable {

    @Id
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumns({
            @JoinColumn(name = "APPL_C", referencedColumnName = "APPL_C"
                    , nullable = false),
            @JoinColumn(name = "MSG_P_I", referencedColumnName = "MSG_P_I"
                    , nullable = false)

    })
    private MessageEntity messageEntity;

    ...
}
@Entity
@Table(name = "MSG")
@IdClass(MessageKey.class)
public class MessageEntity {

    @Id
    @Enumerated(EnumType.STRING)
    @Column(name = "APPL_C", nullable = false)
    private ApplicationCode applicationCode;

    @Id
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "MSG_P_I", nullable = false)
    private ApplicationParameterEntity applicationParameter;

    ...

}
@Entity
@Table(name = "APPL_PARM")
public class ApplicationParameterEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "APPL_PARM_I", nullable = false)
    private Long id;

    @Enumerated(EnumType.STRING)
    @Column(name = "PARM_TYPE_C", nullable = false)
    private ApplicationParameterType parameterType;

    @Column(name = "PARM_N", nullable = false)
    private String parameterName;

    ...
}
public class MessageKey implements Serializable {

    private static final long serialVersionUID = 1L;

    private ApplicationCode applicationCode;
    private Long applicationParameter;

}

我浏览了 hibernate-core 发行说明、hibernate-core:5.4.x 的迁移指南,但无法理解根本原因。

需要帮助以消除此错误。如果有人可以引导我走向正确的方向,那肯定会有所帮助。

更新 1:

添加原始控制台日志输出:

[TRACE] 2021-05-15 14:13:17,669 main org.hibernate.type.descriptor.sql.BasicBinder - {} - binding parameter [1] as [VARCHAR] - [ABC]
[TRACE] 2021-05-15 14:13:17,669 main org.hibernate.type.descriptor.sql.BasicBinder - {} - binding parameter [2] as [VARCHAR] - [XYZ]
[WARN] 2021-05-15 14:13:18,926 main org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext - {} - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messageBZCServiceImpl': Unsatisfied dependency expressed through field 'messageBZCRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageBZCRepository' defined in com.my_app.repository.MessageBZCRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract org.springframework.data.domain.Page com.my_app.repository.MessageBZCRepository.searchByText(java.lang.String,org.springframework.data.domain.Pageable)!
[INFO] 2021-05-15 14:13:18,931 main org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean - {} - Closing JPA EntityManagerFactory for persistence unit 'default'
[INFO] 2021-05-15 14:13:18,932 main com.zaxxer.hikari.HikariDataSource - {} - HikariPool-1 - Shutdown initiated...
[INFO] 2021-05-15 14:13:19,268 main com.zaxxer.hikari.HikariDataSource - {} - HikariPool-1 - Shutdown completed.
May 15, 2021 2:13:19 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]

更新 2:

更新 2:

  • 添加 MessageKey 类
  • 我能够使用 H2 数据库隔离新应用程序中的相关代码并找到完整的堆栈跟踪(hibernate-core-5.4.30.Final 正在与最新的 spring 一起使用):
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageBZCRepository' defined in com.example.JPAIssueDemo.repository.MessageBZCRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract org.springframework.data.domain.Page com.example.JPAIssueDemo.repository.MessageBZCRepository.searchByText(java.lang.String,org.springframework.data.domain.Pageable)!
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:925) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.6.jar:5.3.6]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.6.jar:5.3.6]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) ~[spring-boot-2.4.5.jar:2.4.5]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) ~[spring-boot-2.4.5.jar:2.4.5]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-2.4.5.jar:2.4.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) ~[spring-boot-2.4.5.jar:2.4.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) ~[spring-boot-2.4.5.jar:2.4.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.5.jar:2.4.5]
    at com.example.JPAIssueDemo.JpaIssueDemoApplication.main(JpaIssueDemoApplication.java:10) ~[main/:na]
Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract org.springframework.data.domain.Page com.example.JPAIssueDemo.repository.MessageBZCRepository.searchByText(java.lang.String,org.springframework.data.domain.Pageable)!
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:93) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:63) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:76) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:56) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:146) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:216) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:81) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:100) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(QueryExecutorMethodInterceptor.java:93) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
    at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) ~[na:na]
    at java.base/java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.java:1054) ~[na:na]
    at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:95) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:85) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at java.base/java.util.Optional.map(Optional.java:265) ~[na:na]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:85) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:303) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:323) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:230) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329) ~[spring-data-commons-2.4.8.jar:2.4.8]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:144) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) ~[spring-beans-5.3.6.jar:5.3.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-5.3.6.jar:5.3.6]
    ... 17 common frames omitted
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: parameterName of: com.example.JPAIssueDemo.entity.sl.MessageBZCEntity [select x from com.example.JPAIssueDemo.entity.sl.MessageBZCEntity x where x.messageEntity.comments like ?1 or x.messageEntity.applicationParameter.parameterName like ?1 or x.zipCode like ?1 or x.userUpdated like ?1]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:734) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.6.jar:5.3.6]
    at com.sun.proxy.$Proxy89.createQuery(Unknown Source) ~[na:na]
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:87) ~[spring-data-jpa-2.4.8.jar:2.4.8]
    ... 46 common frames omitted
Caused by: org.hibernate.QueryException: could not resolve property: parameterName of: com.example.JPAIssueDemo.entity.sl.MessageBZCEntity [select x from com.example.JPAIssueDemo.entity.sl.MessageBZCEntity x where x.messageEntity.comments like ?1 or x.messageEntity.applicationParameter.parameterName like ?1 or x.zipCode like ?1 or x.userUpdated like ?1]
    at org.hibernate.QueryException.generateQueryException(QueryException.java:120) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:220) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:613) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    ... 54 common frames omitted
Caused by: org.hibernate.QueryException: could not resolve property: parameterName of: com.example.JPAIssueDemo.entity.sl.MessageBZCEntity
    at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:77) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:71) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:2038) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:412) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:520) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:695) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:269) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:209) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:1055) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1308) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4778) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4388) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2166) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2119) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2116) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2116) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:832) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:626) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:330) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:278) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:276) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
    ... 60 common frames omitted

【问题讨论】:

  • 请添加完整的堆栈跟踪。还有,为什么不能更新?
  • 这是一个 WARN 级别的输出,在应用程序自行终止之前打印在控制台中。我尝试将 root/hibernate/spring boot 的日志级别更改为 TRACE/DEBUG,但堆栈跟踪仍然没有成功。你能帮我打印一下吗?
  • 这怎么可能是警告?在您的问题中,您写的是应用程序无法启动。不确定您指的是哪个警告。
  • 最后添加了原始控制台日志输出以获取更多信息。在它的上方和下方添加几行,如果它们可能相关的话。
  • 为什么不能只使用最新的 Hibernate 版本?

标签: java hibernate jpa spring-data-jpa hibernate-mapping


【解决方案1】:

尝试以下查询

@Override
@Query("select x from MessageBZCEntity x join x.messageEntity as me join fetch me.applicationParamter as ap " +
        "where me.comments like ?1 or ap.parameterName like ?1 or x.zipCode like ?1 or x.userUpdated like ?1")
Page<MessageBZCEntity> searchByText(String searchText, Pageable pageable);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多