0

以下作品:

QTransaction.transaction.postingText.lower().like("%" + filter.getPostingText().toLowerCase() + "%"))

我正在尝试类似的查询,但将 x 替换为 u:

Expressions.stringTemplate("replace({0},'x','u')", QTransaction.transaction.postingText.lower()).like("%" + filter.getPostingText().toLowerCase() + "%"));

日志显示:

replace(lower(transaction.postingText),'x','u') like ?5 escape '!']. 
The right expression is not a valid expression.

我究竟做错了什么?

    @Bean
    @DependsOn("jmsConnectionFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws Exception {
        EclipseLinkJpaVendorAdapter vendorAdapter = new EclipseLinkJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(false);
        vendorAdapter.setDatabasePlatform("org.eclipse.persistence.platform.database.PostgreSQLPlatform");
        vendorAdapter.setShowSql(false);
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        List<String> packages = new ArrayList<>();
        packages.addAll(Arrays.asList(PACKAGES_TO_SCAN_DATA_ENTITIES));
        packages.addAll(additionalPackagesToScan);
        factory.setPackagesToScan(packages.toArray(new String[] {}));
        factory.setDataSource(dataSource());
        factory.setJpaDialect(new EclipseLinkJpaDialect());
        Properties props = jpaProperties();
        factory.setJpaProperties(props);
        return factory;
    }

一个简化的示例如下所示:

BooleanExpression boolExpr = Expressions.stringTemplate("replace({0},'x','u')", QTransaction.transaction.postingText).like("%" + filter.getPostingText() + "%");
transactionRepository.findAll(boolExpr);

日志显示:

An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing [select transaction
from Transaction transaction
where replace(transaction.postingText,'x','u') like ?1 escape '!']. 
[54, 115] The expression is not a valid conditional expression.
4

0 回答 0