SSCCE is here: https://github.com/dims12/TrySpringJpaPlusHibernate
I am trying to run Spring JPA without persistence.xml and have the following config:
@Configuration
@ComponentScan
@ImportResource("classpath:data_source.xml")
@EnableJpaRepositories("org.inthemoon.train.chinese.repositories")
public class BaseConfig {
@Autowired
private DataSource dataSource;
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean ans =
new LocalContainerEntityManagerFactoryBean();
ans.setDataSource(dataSource);
ans.setJpaVendorAdapter(jpaVendorAdapter());
ans.setPackagesToScan("org.inthemoon.train.chinese.data");
return ans;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter ans = new HibernateJpaVendorAdapter();
ans.setShowSql(false);
ans.setGenerateDdl(true);
ans.setDatabase(Database.H2);
return ans;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager ans = new JpaTransactionManager();
ans.setEntityManagerFactory(emf);
return ans;
}
}
it cause the following exception
Exception in thread "main" org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.NoSuchMethodError: org.hibernate.Session.getFlushMode()Lorg/hibernate/FlushMode;
...
P.S. Is there any way to configure IoC
from the first attempt?
UPDATE
I am using following libs:
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.5.Final'
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '1.10.5.RELEASE'
UPDATE 2
I tried 8 different versions of hibernate-core
to build with spring-jpa of 1.10.5.RELEASE
.
Versions from 5.2.1
to 5.2.6
were causing the same exception
NoSuchMethodError: org.hibernate.Session.getFlushMode()Lorg/hibernate/FlushMode;
Versions 5.1.3
and 5.0.11
were causing
ClassNotFoundException: org.hibernate.ejb.HibernateEntityManagerFactory
And the only version was causing something more complex was 5.2.0
. It was causing
SchemaManagementException: Attempt to resolve foreign key metadata from JDBC metadata failed to find column mappings for foreign key named [FKLOK22W31RKBMIIC2J96T9LTCN
The questions arose:
1) Does this mean that namely version 5.2.0
is compatible with 1.10.5
?
2) How would I know this without experiment?
3) Is this normal to guess versions this way? Wasn't the purpose of dependency management tools to avoid such things? If spring-data-jpa:1.10.5
depends on hibernate of 5.2.0
then why doesn't this described in it's POM
?
UPDATE 3
Out of the box example: https://github.com/dims12/TrySpringJpaPlusHibernate
It doesn't work.