У меня есть два разных источника данных в весеннем загрузочном проекте. Одно из имен схемы источника данных - мошенничество, а другое - test. Когда я пытаюсь вставить объект в таблицу, я получаю сообщение об ошибке, например
java.lang.IllegalArgumentException: org.hibernate.dialect.identity.IdentityColumnSupportImpl does not support identity key generation
Я пытался решить эту проблему
org.hibernate.dialect.OracleDialect не поддерживает генерацию идентификационных ключей
Но этот выдает ошибку, такую как
ORA-02289: sequence does not exist
Спасибо
CONTROLLER
if (channel.isAnyConvertionFailed()) {
FraudChannelException fce = new FraudChannelException(/*Params*/);
fraudChannelExceptionRepository.save(fce);
}
//Check if any mandatory fields are empty
if (/*condition*/){
FraudChannelException fce = new FraudChannelException(/*Params*/);
fraudChannelExceptionRepository.save(fce);
return ExceptionConfiguration.handleMissingFieldError(message);
}
СКЛАД
@Repository
public interface FraudChannelExceptionRepository extends CrudRepository<FraudChannelException, Integer> {
}
ЛИЦО
@Entity
@Table(name="fraud_channel_exceptions", schema = "fraud")
public class FraudChannelException implements Serializable {
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
//more fields
public FraudChannelException(/*PARAMS*/) {
//init something
}
public FraudChannelException(/*PARAMS*/) {
//init something
}
public FraudChannelException(/*PARAMS*/) {
//init something
}
public FraudChannelException() {
}
//Getter Setter
}
CONFIG
@Configuration
@PropertySource({ "classpath:application.properties" })
@EnableJpaRepositories(basePackages = "com.ykb.frd.fraudcore.schema.fraud.repo",entityManagerFactoryRef = "entityManager",transactionManagerRef = "transactionManager")
public class FraudConfig{
@Autowired
private Environment env;
@Bean
@Primary
public LocalContainerEntityManagerFactoryBean entityManager() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("com.ykb.frd.fraudcore.schema.fraud.domain");
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
properties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
em.setJpaPropertyMap(properties);
return em;
}
@Primary
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource= new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty("fraud.datasource.driverClassName"));
dataSource.setUrl(env.getProperty("fraud.datasource.url"));
dataSource.setUsername(env.getProperty("fraud.datasource.username"));
dataSource.setPassword(env.getProperty("fraud.datasource.password"));
return dataSource;
}
@Primary
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager transactionManager= new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManager().getObject());
return transactionManager;
}
}
APPLICATION.PROPERTIES
# EBNKTST - NDVLIVE
ndvlive.datasource.url=jdbc:oracle:thin:@//URL
ndvlive.datasource.username=//USERNAME
ndvlive.datasource.password=//PASSWORD
ndvlive.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
# EBNKDEV - FRAUD
fraud.datasource.url=jdbc:oracle:thin:@//URL
fraud.datasource.username=//USERNAME
fraud.datasource.password=//PASSWORD
fraud.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
logging.level.org.hibernate.SQL=debug