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);
我有这个存储库:
@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);