Spring Oracle 中的数据 JPA + EclipseLink

Spring Data JPA + EclipseLink in Oracle

我有这个存储库:

@Repository
public interface EnvaRepository extends JpaRepository<Enva, Long> {
}

和这个查询:

 envaRepository.findAllById(lopn.getEnvans());

但是在控制台上我有这个错误:

SELECT t0.PERSONNE_ID, t0.DT_NAISSANCE, t1.PERSONNE_ID FROM PERSONNE t0, ENVA t1
WHERE ((t0.PERSONNE_ID IN ((777,777))) AND (t1.PERSONNE_ID = t0.PERSONNE_ID));

[42000][907] ORA-00907: parenthèse de droite absente

我的配置class:

@Configuration
public class JpaConfiguration extends JpaBaseConfiguration {

    protected JpaConfiguration(DataSource dataSource, JpaProperties properties, ObjectProvider<JtaTransactionManager> jtaTransactionManager, ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
        super(dataSource, properties, jtaTransactionManager, transactionManagerCustomizers);
    }

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        log.debug("Using EclipseLinkJpaVendorAdapter");
        return new EclipseLinkJpaVendorAdapter();
    }

    @Bean
    @Primary
    public static JpaProperties properties() {
        final JpaProperties jpaProperties = new JpaProperties();
        jpaProperties.setShowSql(true);
        jpaProperties.setDatabasePlatform("org.eclipse.persistence.platform.database.OraclePlatform");
        return jpaProperties;
    }

    @Override
    protected Map<String, Object> getVendorProperties() {
        HashMap<String, Object> map = new HashMap<>();
        map.put(PersistenceUnitProperties.WEAVING, detectWeavingMode());
        return map;
    }

    private String detectWeavingMode() {
        return InstrumentationLoadTimeWeaver.isInstrumentationAvailable() ? "true" : "static";
    }
}

去掉 IN 语句中的额外括号,如下所示:

SELECT t0.PERSONNE_ID, t0.DT_NAISSANCE, t1.PERSONNE_ID 
FROM PERSONNE t0, ENVA t1
WHERE ((t0.PERSONNE_ID IN (777,777)) 
AND (t1.PERSONNE_ID = t0.PERSONNE_ID));
@Query("SELECT e FROM Enva e where e.personneId IN :envantIds")
    List<Enva> findAllById(Iterable<Long> envantIds);