· 8 years ago · Mar 16, 2018, 10:02 AM
1@Configuration
2@ComponentScan(basePackages = "com.myapp.data", excludeFilters = { @Filter(Configuration.class) })
3@PropertySource("classpath:/test.properties")
4@Profile("test")
5public class SpringTestingConfig {
6 @Bean
7 public DataSource dataSource() {
8 DriverManagerDataSource dataSource = new DriverManagerDataSource();
9 dataSource.setDriverClassName("org.h2.Driver");
10 dataSource.setUrl("jdbc:h2:mem:test;MODE=Mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS TEST");
11 dataSource.setUsername("sa");
12 dataSource.setPassword("");
13 return dataSource;
14 }
15}
16
17@RunWith(SpringJUnit4ClassRunner.class)
18@TestExecutionListeners({ WebContextTestExecutionListener.class,
19 DependencyInjectionTestExecutionListener.class,
20 DirtiesContextTestExecutionListener.class,
21 TransactionalTestExecutionListener.class })
22@ActiveProfiles("test")
23@DirtiesContext
24@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {
25 SpringConfig.class, SpringTestingConfig.class,
26 SpringLocalContainerJPAConfig.class, CustomConfiguration.class })
27public class MyTestClass{
28
29}
30
31org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [/* select generatedAlias0 from User as generatedAlias0 */ select user0_.id as id1_8_, user0_.jpa_version as jpa2_8_, user0_.AccountActivated as AccountA3_8_, user0_.AccountActivationDate as AccountA4_8_, user0_.IsAdmin as IsAdmin5_8_, user0_.Bio as Bio6_8_, user0_.birthMonth as birthMon7_8_, user0_.CashGivingBalance as CashGivi8_8_, user0_.CashReceivedBalance as CashRece9_8_, user0_.CompanyGID as Company28_8_, user0_.AccountCreatedDate as Account10_8_, user0_.dayOfBirthday as dayOfBi11_8_, user0_.DeletionWarningDate as Deletio12_8_, user0_.Dept as Dept13_8_, user0_.Email as Email14_8_, user0_.FirstName as FirstNa15_8_, user0_.HireDate as HireDat16_8_, user0_.is_active as is17_8_, user0_.LastLogin as LastLog18_8_, user0_.LastName as LastNam19_8_, user0_.LastSatisfactionSurveyDate as LastSat20_8_, user0_.Locale as Locale21_8_, user0_.MPath as MPath22_8_, user0_.MTDRewards as MTDRewa23_8_, user0_.Password as Passwor24_8_, user0_.PersonalityType as Persona25_8_, user0_.Title as Title26_8_, user0_.YTDRewards as YTDRewa27_8_ from myapp.User user0_]; SQL state [90079]; error code [90079]; could not prepare statement; nested exception is org.hibernate.exception.GenericJDBCException: could not prepare statement
32 at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:651)
33 at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:106)
34 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:403)
35 at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58)
36 at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
37 at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:163)
38 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
39 at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:92)
40 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
41 at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
42 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
43 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
44 at com.sun.proxy.$Proxy79.deleteAll(Unknown Source)
45 at test.myapp.web.controllers.SignUpBeanTest.before(SignUpBeanTest.java:69)
46 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
47 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
48 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
49 at java.lang.reflect.Method.invoke(Unknown Source)
50 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
51 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
52 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
53 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
54 at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
55 at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
56 at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
57 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
58 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
59 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
60 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
61 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
62 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
63 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
64 at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
65 at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
66 at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
67 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
68 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
69 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
70 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
71 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
72 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
73 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
74Caused by: org.hibernate.exception.GenericJDBCException: could not prepare statement
75 at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
76 at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
77 at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:188)
78 at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:159)
79 at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1854)
80 at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1831)
81 at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)
82 at org.hibernate.loader.Loader.doQuery(Loader.java:899)
83 at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
84 at org.hibernate.loader.Loader.doList(Loader.java:2516)
85 at org.hibernate.loader.Loader.doList(Loader.java:2502)
86 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)
87 at org.hibernate.loader.Loader.list(Loader.java:2327)
88 at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
89 at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
90 at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
91 at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1268)
92 at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
93 at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:264)
94 at org.hibernate.ejb.criteria.CriteriaQueryCompiler$3.getResultList(CriteriaQueryCompiler.java:254)
95 at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:247)
96 at org.springframework.data.jpa.repository.support.SimpleJpaRepository.deleteAll(SimpleJpaRepository.java:184)
97 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
98 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
99 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
100 at java.lang.reflect.Method.invoke(Unknown Source)
101 at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:333)
102 at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:318)
103 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
104 at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
105 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
106 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
107 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
108 at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
109 ... 36 more
110Caused by: org.h2.jdbc.JdbcSQLException: Schema "MYAPP" not found; SQL statement:
111/* select generatedAlias0 from User as generatedAlias0 */ select user0_.id as id1_8_, user0_.jpa_version as jpa2_8_, user0_.AccountActivated as AccountA3_8_, user0_.AccountActivationDate as AccountA4_8_, user0_.IsAdmin as IsAdmin5_8_, user0_.Bio as Bio6_8_, user0_.birthMonth as birthMon7_8_, user0_.CashGivingBalance as CashGivi8_8_, user0_.CashReceivedBalance as CashRece9_8_, user0_.CompanyGID as Company28_8_, user0_.AccountCreatedDate as Account10_8_, user0_.dayOfBirthday as dayOfBi11_8_, user0_.DeletionWarningDate as Deletio12_8_, user0_.Dept as Dept13_8_, user0_.Email as Email14_8_, user0_.FirstName as FirstNa15_8_, user0_.HireDate as HireDat16_8_, user0_.is_active as is17_8_, user0_.LastLogin as LastLog18_8_, user0_.LastName as LastNam19_8_, user0_.LastSatisfactionSurveyDate as LastSat20_8_, user0_.Locale as Locale21_8_, user0_.MPath as MPath22_8_, user0_.MTDRewards as MTDRewa23_8_, user0_.Password as Passwor24_8_, user0_.PersonalityType as Persona25_8_, user0_.Title as Title26_8_, user0_.YTDRewards as YTDRewa27_8_ from myapp.User user0_ [90079-172]
112 at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
113 at org.h2.message.DbException.get(DbException.java:169)
114 at org.h2.message.DbException.get(DbException.java:146)
115 at org.h2.command.Parser.getSchema(Parser.java:613)
116 at org.h2.command.Parser.getSchema(Parser.java:620)
117 at org.h2.command.Parser.readTableFilter(Parser.java:1067)
118 at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1705)
119 at org.h2.command.Parser.parseSelectSimple(Parser.java:1813)
120 at org.h2.command.Parser.parseSelectSub(Parser.java:1699)
121 at org.h2.command.Parser.parseSelectUnion(Parser.java:1542)
122 at org.h2.command.Parser.parseSelect(Parser.java:1530)
123 at org.h2.command.Parser.parsePrepared(Parser.java:405)
124 at org.h2.command.Parser.parse(Parser.java:279)
125 at org.h2.command.Parser.parse(Parser.java:251)
126 at org.h2.command.Parser.prepareCommand(Parser.java:218)
127 at org.h2.engine.Session.prepareLocal(Session.java:425)
128 at org.h2.engine.Session.prepareCommand(Session.java:374)
129 at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1138)
130 at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:70)
131 at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:267)
132 at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:161)
133 at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182)
134 ... 67 more
135
13614:04:20.043 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - create table myapp.CashReceiving (id varchar(36) not null, jpa_version bigint, amount integer not null, AmountBalance integer not null, AmountRedeemed integer not null, Comments integer, CompanyValueGID varchar(255), EntryDate datetime not null, Likes integer, Note varchar(255), CompanyGID varchar(36) not null, fromUserGID varchar(36), toUserGID varchar(36) not null, primary key (id)) ENGINE=InnoDB
137 14:04:20.044 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000388: Unsuccessful: create table myapp.CashReceiving (id varchar(36) not null, jpa_version bigint, amount integer not null, AmountBalance integer not null, AmountRedeemed integer not null, Comments integer, CompanyValueGID varchar(255), EntryDate datetime not null, Likes integer, Note varchar(255), CompanyGID varchar(36) not null, fromUserGID varchar(36), toUserGID varchar(36) not null, primary key (id)) ENGINE=InnoDB
138 14:04:20.044 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Schema "MYAPP" not found; SQL statement:
13914:04:22.353 [main] DEBUG org.hibernate.hql.internal.ast.ErrorCounter - throwQueryException() : no errors
14014:04:22.353 [main] DEBUG org.hibernate.hql.internal.antlr.HqlSqlBaseWalker - select << begin [level=1, statement=select]
14114:04:22.354 [main] DEBUG org.hibernate.hql.internal.ast.tree.FromElement - FromClause{level=1} : com.myapp.data.domain.User (generatedAlias0) -> user0_
14214:04:22.354 [main] DEBUG org.hibernate.hql.internal.ast.tree.FromReferenceNode - Resolved : generatedAlias0 -> user0_.id
14314:04:22.354 [main] DEBUG org.hibernate.hql.internal.antlr.HqlSqlBaseWalker - select : finishing up [level=1, statement=select]
14414:04:22.354 [main] DEBUG org.hibernate.hql.internal.ast.HqlSqlWalker - processQuery() : ( SELECT ( {select clause} user0_.id ) ( FromClause{level=1} myapp.User user0_ ) )
14514:04:22.355 [main] DEBUG org.hibernate.hql.internal.ast.util.JoinProcessor - Using FROM fragment [myapp.User user0_]
14614:04:22.356 [main] DEBUG org.hibernate.hql.internal.antlr.HqlSqlBaseWalker - select >> end [level=1, statement=select]
14714:04:22.356 [main] DEBUG org.hibernate.hql.internal.ast.QueryTranslatorImpl - --- SQL AST ---
148
149hibernate.default_schema=Test
150
151@Configuration
152@EnableSpringConfigured
153public class SpringJNDIJPAConfig {
154protected static final Logger logger = LoggerFactory.getLogger(SpringConfig.class);
155protected static final String HIBERNATE_TRANSACTION_JTA_PLATFORM = "hibernate.transaction.jta.platform";
156
157@Value("${hibernate.naming_strategy:org.hibernate.cfg.DefaultNamingStrategy}")
158private String namingStrategy;
159
160@Value("${hibernate.packages_to_scan:com.myapp.data.domain}")
161private String packagesToScan;
162
163@Value("${spring_config.project_name}")
164private String projectName;
165
166@Value("${hibernate.show_sql:false}")
167private String showSql;
168
169@Value("${hibernate.hbm2ddl.auto:update}")
170private String hbm2ddlAuto;
171
172@Value("${hibernate.format_sql:false}")
173private String formatSql;
174
175@Value("${hibernate.dialect:org.hibernate.dialect.MySQL5InnoDBDialect}")
176private String hibernateDialect;
177
178@Value("${hibernate.connection.useUnicode:true}")
179private String useUnicode;
180
181@Value("${hibernate.connection.characterEncoding:UTF-8}")
182private String characterEncoding;
183
184@Value("${hibernate.charSet:UTF-8}")
185private String charSet;
186
187@Value("${hibernate.default_schema:myapp}")
188private String defaultSchema;
189
190@Value("${hibernate.use_default_schema:true}")
191private boolean useDefaultSchema;
192
193@Value("${hibernate.use_sql_comments:true}")
194private String useSqlComments;
195
196@Autowired
197private ApplicationContext applicationContext;
198
199@Autowired
200private DataSource dataSource;
201
202@Bean
203public HibernateExceptionTranslator hibernateExceptionTranslator() {
204 return new HibernateExceptionTranslator();
205}
206
207@Bean
208protected EntityManagerFactory entityManagerFactory() {
209 LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
210
211 JtaPersistenceUnitManager puManager = new JtaPersistenceUnitManager();
212 Map<String, DataSource> dataSources = new HashMap<String, DataSource>();
213 dataSources.put("dataSource", dataSource);
214 puManager.setDataSourceLookup(new MapDataSourceLookup(dataSources));
215 puManager.setDefaultDataSource(dataSource);
216 puManager.setPackagesToScan(packagesToScan());
217 bean.setPersistenceUnitManager(puManager);
218
219 bean.setPersistenceProviderClass(HibernatePersistence.class);
220 bean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
221
222 Properties jpaProperties = getHibernateProperties();
223 jpaProperties.put(HIBERNATE_TRANSACTION_JTA_PLATFORM, SpringJtaPlatform.class.getName().toString());
224 bean.setJpaProperties(jpaProperties);
225
226 puManager.afterPropertiesSet();
227 bean.afterPropertiesSet();
228 return bean.getObject();
229}
230
231protected String getDefaultSchema() {
232 String ds = ConfigurationUtil.config().getString("db.schema.name");
233 if (ds != null) defaultSchema = ds;
234 return defaultSchema;
235}
236
237protected String getUseUnicode() {
238 return useUnicode;
239}
240
241protected String getCharacterEncoding() {
242 return characterEncoding;
243}
244
245protected String getCharSet() {
246 return charSet;
247}
248
249protected String getFormatSql() {
250 return formatSql;
251}
252
253protected String getHbm2ddlAuto() {
254 return hbm2ddlAuto;
255}
256
257protected String getHibernateDialect() {
258 return hibernateDialect;
259}
260
261protected Properties getHibernateProperties() {
262 Properties properties = new Properties();
263 properties.put("hibernate.dialect", getHibernateDialect());
264 properties.put("hibernate.hbm2ddl.auto", getHbm2ddlAuto());
265 properties.put("hibernate.show_sql", getShowSql());
266 properties.put("hibernate.use_sql_comments", getUseSqlComments());
267 properties.put("hibernate.format_sql", getFormatSql());
268 if(useDefaultSchema) {
269 properties.put("hibernate.default_schema", getDefaultSchema());
270 }
271 //properties.put("hibernate.ejb.naming_strategy", namingStrategy);
272 properties.put("hibernate.hbm2ddl.import_files", "/import.sql");
273 //properties.put("hibernate.connection.characterEncoding", getCharacterEncoding());
274 //properties.put("hibernate.connection.charSet", getCharSet());
275 //properties.put("hibernate.connection.useUnicode", getUseUnicode());
276 if(logger.isInfoEnabled()) {
277 logger.info(MessageFormat.format("SET HIBERNATE PROPERTIES: {0}", properties.toString()));
278 }
279 return properties;
280}
281
282protected String getProjectName() {
283 return projectName;
284}
285
286protected String getShowSql() {
287 return showSql;
288}
289
290protected String getUseSqlComments() {
291 return useSqlComments;
292}
293
294protected String packagesToScan() {
295 return packagesToScan;
296 }
297
298@Bean
299protected JtaTransactionManager transactionManager() {
300 SpringBeanFactory.setApplicationContext(applicationContext);
301 JtaTransactionManager manager = new JtaTransactionManager();
302 manager.setTransactionManagerName("java:jboss/TransactionManager");
303 manager.setUserTransactionName("java:jboss/UserTransaction");
304 manager.afterPropertiesSet();
305 return manager;
306}
307
308}
309
310from myapp.User user0_
311
312from TEST.User user0_ ?
313
314@Value("${hibernate.default_schema:myapp}")
315private String defaultSchema;
316
317@Value("${hibernate.default_schema}")
318private String defaultSchema;
319
320dataSource.setUrl("jdbc:h2:mem:test;MODE=Mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS MYAPP");
321
322dataSource.setUrl("jdbc:h2:mem:test;MODE=Mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS TEST;SCHEMA=TEST");
323
324dataSource.setUsername("sa");
325dataSource.setPassword("");
326
327dataSource.setUrl("jdbc:h2:mem:cpq_testdb;INIT=create schema if not exists my_database\;runscript from '**classpath:scripts/create.sql**';DB_CLOSE_DELAY=-1");
328
329use my_database;
330create schema if not exists your_schema_name;