title: Pre loading data from .sql before unit testing throws syntax error
body: <p>I'm performing unit testing on spring boot app using JPA and SpringJUnit4ClassRunner. for that I have created a configuration file as - </p>
  
  <pre><code>
  @Configuration
  @EnableJpaRepositories(basePackages = "base_package_name")
  @EnableTransactionManagement
  public class JPAConfig {
  
      @Bean
      public DataSource dataSource() {
          DriverManagerDataSource dataSource = new DriverManagerDataSource();
          dataSource.setDriverClassName("org.postgresql.Driver");
          dataSource.setUrl("jdbc:postgresql://localhost:5432/employeedb_test");
          dataSource.setUsername("postgres");
          dataSource.setPassword("postgres");
  
          return dataSource;
      }
  
      private Properties hibernateProperties() {
          Properties properties = new Properties();
          properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQL9Dialect");        
          properties.put("hibernate.hbm2ddl.auto", "create");
          properties.put("hibernate.show_sql", "true");
          properties.put("hibernate.format_sql", "false");
          return properties;
      }
  
      @Bean(name="entityManagerFactory")
      public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(){
  
          LocalContainerEntityManagerFactoryBean lcemfb
              = new LocalContainerEntityManagerFactoryBean();
  
          lcemfb.setDataSource(this.dataSource());
          lcemfb.setPackagesToScan(new String[] {"Package_to_scan"});
  
          HibernateJpaVendorAdapter va = new HibernateJpaVendorAdapter();
          lcemfb.setJpaVendorAdapter(va);
  
          lcemfb.setJpaProperties(this.hibernateProperties());
  
          lcemfb.afterPropertiesSet();
  
          return lcemfb;
  
      }
  
  
      @Bean
      public PlatformTransactionManager transactionManager(){
  
          JpaTransactionManager tm = new JpaTransactionManager();
  
          tm.setEntityManagerFactory(
              this.entityManagerFactoryBean().getObject() );
  
          return tm;
  
      }
  
      @Bean
      public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
          return new PersistenceExceptionTranslationPostProcessor();
      }
  }
  
  
  </code></pre>
  
  <p>My test class looks like this - </p>
  
  <pre><code>
  @RunWith(SpringJUnit4ClassRunner.class)
  @ContextConfiguration(classes={
          JPAConfig.class,
          TestConfig.class
          })
  @SqlGroup({
      @Sql(executionPhase=ExecutionPhase.BEFORE_TEST_METHOD,scripts="classpath:beforeTestRun.sql")
  })
  public class ExampleTest {
       ...
  }
  
  </code></pre>
  
  <p>now I want to insert data from script file beforeTestRun.sql into entity before running any test. so I added following annotation above my test class(i.e. ExampleTest) - </p>
  
  <pre><code>@SqlGroup({
      @Sql(executionPhase=ExecutionPhase.BEFORE_TEST_METHOD,scripts="classpath:beforeTestRun.sql")
  })
  </code></pre>
  
  <p>my beforeTestRun.sql contains insert query - </p>
  
  <pre><code>INSERT INTO employee(emp_name)
      VALUES ('Jhon Dave');
  </code></pre>
  
  <p>my model class is - </p>
  
  <pre><code>
  @Entity
  @Table(name = "employee")
  public class Employee {
  
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      @Column(name="emp_id")
      Integer id;
  
      @Column(name="emp_name")
      String empName;
  
  
      public Integer getId() {
          return id;
      }
      public void setId(Integer id) {
          this.id = id;
      }
  
      public String getEmpName() {
          return empName;
      }
      public void setEmpName(String empName) {
          this.empName = empName;
      }
  
  
  }
  
  </code></pre>
  
  <p>now after running test class, it trying to insert from .sql file but eventhough the syntax is correct it throwing an error says - </p>
  
  <pre><code>org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of class path resource [beforeTestRun.sql]: INSERT INTO employee(emp_name) VALUES ('Jhon Dave'); nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near "INSERT"
    Position: 1
      at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:626)
      at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:254)
      at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:49)
      at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.execute(ResourceDatabasePopulator.java:269)
      at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.lambda$executeSqlScripts$4(SqlScriptsTestExecutionListener.java:263)
      at org.springframework.transaction.support.TransactionOperations.lambda$executeWithoutResult$0(TransactionOperations.java:68)
      at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
      at org.springframework.transaction.support.TransactionOperations.executeWithoutResult(TransactionOperations.java:67)
      at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts(SqlScriptsTestExecutionListener.java:263)
      at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.lambda$executeSqlScripts$0(SqlScriptsTestExecutionListener.java:185)
      at java.lang.Iterable.forEach(Unknown Source)
      at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts(SqlScriptsTestExecutionListener.java:185)
      at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts(SqlScriptsTestExecutionListener.java:147)
      at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.beforeTestMethod(SqlScriptsTestExecutionListener.java:117)
      at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:289)
      at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
      at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
      at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
      at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
      at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
  Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "INSERT"
    Position: 1
      at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2497)
      at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2233)
      at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:310)
      at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:446)
      at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:370)
      at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:311)
      at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:297)
      at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:274)
      at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:269)
      at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:605)
      ... 35 more
  </code></pre>
  
  <p>Can you please suggest me on this??</p>