4

I'm using JPA/Hibernate as ORM in my code. I migrated code from one repository to another and now none of the tests are working any more. The biggest change is in the pom.xml.

When I try to do anything db-related I get a "SQLException: This function is not supported". Googling provided me with info saying that I should have my hsqldb updated, and it looks like this:

<dependency>
  <groupId>org.hsqldb</groupId>
  <artifactId>hsqldb</artifactId>
  <version>2.3.4</version>
</dependency>

My test code:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
public class TestHsqlDb {
    @Autowired
    private DummyRepository repository;
    private NameHolder toSave;
    @Transactional
    @Before
    public void setUp() {
        final NameHolder nameHolder = new NameHolder();
        nameHolder.setName("blaha");
        this.toSave = nameHolder;
    }
    @Transactional
    @Test
    public void testAddAndRetrieveCompanyGroup() {
        repository.save(toSave);
        NameHolder result = Lists.newArrayList(repository.findAll()).stream().findFirst().get();
        assertEquals(toSave, result);
    }
}

My config looks like this:

@EnableTransactionManagement
@EnableJpaRepositories("se")
@Configuration
public class TestConfig {

    @Bean
    public EntityManagerFactory entityManagerFactory() {
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        Map<String, Object> properties = Maps.newHashMap();
        properties.put("hibernate.hbm2ddl.auto", "update");
        properties.put("hibernate.show_sql", true);
        properties.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
        properties.put("javax.persistence.jdbc.driver", "org.hsqldb.jdbcDriver");
        factory.setJpaPropertyMap(properties);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setPackagesToScan("se");
        factory.setDataSource(dataSource());
        factory.afterPropertiesSet();
        return factory.getObject();
    }
    @Bean
    public PlatformTransactionManager transactionManager() {
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory());
        return txManager;
    }


    @Bean
    public DataSource dataSource() {
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        return builder.setType(EmbeddedDatabaseType.HSQL).build();
    }

}

My example entity looks kind of like this:

@Entity
@Table
public class NameHolder implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;
}

The pom.xml is huge. Any advice on how I should handle this problem would be helpful. Could there be conflicts in the pom? Should have seen a warning for that right?

Full error log when running the test:

INFO: HHH000232: Schema update complete
5562 [main] INFO org.springframework.test.context.transaction.TransactionContext - Began transaction (1) for test context [DefaultTestContext@52e04737 testClass = TestHsqlDb, testInstance = se.strategic9.easytimereporter.backend.controller.TestHsqlDb@5bc7e78e, testMethod = testAddAndRetrieveCompanyGroup@TestHsqlDb, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@1a4d1ab7 testClass = TestHsqlDb, locations = '{}', classes = '{class se.strategic9.easytimereporter.backend.TestConfig}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@546e61d5]; rollback [true]
Hibernate: insert into NameHolder (id, name) values (null, ?)
Jan 02, 2017 10:43:44 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: -20, SQLState: IM001
Jan 02, 2017 10:43:44 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: This function is not supported
5606 [main] INFO org.springframework.test.context.transaction.TransactionContext - Rolled back transaction for test context [DefaultTestContext@52e04737 testClass = TestHsqlDb, testInstance = se.strategic9.easytimereporter.backend.controller.TestHsqlDb@5bc7e78e, testMethod = testAddAndRetrieveCompanyGroup@TestHsqlDb, testException = javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not prepare statement, mergedContextConfiguration = [MergedContextConfiguration@1a4d1ab7 testClass = TestHsqlDb, locations = '{}', classes = '{class se.strategic9.easytimereporter.backend.TestConfig}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]].
5618 [Thread-1] INFO org.springframework.context.support.GenericApplicationContext - Closing org.springframework.context.support.GenericApplicationContext@6adede5: startup date [Mon Jan 02 10:43:39 CET 2017]; root of context hierarchy

javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not prepare statement

    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1187)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:291)
    at com.sun.proxy.$Proxy40.persist(Unknown Source)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:439)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:475)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:460)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:432)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:119)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy65.save(Unknown Source)
    at se.strategic9.easytimereporter.backend.controller.TestHsqlDb.testAddAndRetrieveCompanyGroup(TestHsqlDb.java:42)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:224)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83)
    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:68)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: org.hibernate.exception.GenericJDBCException: could not prepare statement
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:196)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:122)
    at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:55)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3558)
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:98)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:492)
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:197)
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:181)
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:216)
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:334)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:195)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126)
    at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:84)
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:206)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:149)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75)
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181)
    ... 63 more
Caused by: java.sql.SQLException: This function is not supported
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.Util.notSupported(Unknown Source)
    at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:124)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186)
    ... 84 more


Process finished with exit code 255

Dependencies from POM:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>

    <appengine.app.version>1</appengine.app.version>
    <appengine.target.version>1.9.48</appengine.target.version>
    <appengine-maven-plugin-version>1.0.0</appengine-maven-plugin-version>

    <jersey.version>1.18</jersey.version>
    <spring.version>4.1.7.RELEASE</spring.version>
    <jstl.version>1.2</jstl.version>
    <servletapi.version>2.5</servletapi.version>
    <hibernate.version>4.3.10.Final</hibernate.version>

    <hsqldb.version>2.3.4</hsqldb.version>

</properties>

<dependencies>
    <!-- Compile/runtime dependencies -->
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>${appengine.target.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-testing</artifactId>
        <version>${appengine.target.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-stubs</artifactId>
        <version>${appengine.target.version}</version>
        <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.1.1</version>
    </dependency>

    <dependency>
        <groupId>com.owlike</groupId>
        <artifactId>genson</artifactId>
        <version>0.99</version>
    </dependency>


    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>${hsqldb.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.9.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.187</version>
    </dependency>
    <!-- DATABASE'n'SHIT -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.2.0.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.el</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-lgpl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <!-- Required for bypassing web.xml via Guice.-->


    <!-- javax: XML binding -->

    <!-- logger.... -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.15</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.15</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.6</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.5.6</version>
    </dependency>
    <!-- Google & Firebase dependenices -->
    <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-server-sdk</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>18.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client-jetty</artifactId>
        <version>1.22.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client</artifactId>
        <version>1.22.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-sheets</artifactId>
        <version>v4-rev34-1.22.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-drive</artifactId>
        <version>v3-rev49-1.22.0</version>
    </dependency>


    <dependency>
        <groupId>com.thetransactioncompany</groupId>
        <artifactId>cors-filter</artifactId>
        <version>2.4</version>
    </dependency>

    <dependency>
        <groupId>com.google.cloud.sql</groupId>
        <artifactId>mysql-socket-factory</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency> <!-- ONLY USED LOCALY -->
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.40</version>  <!-- v5.x.x is Java 7, v6.x.x is Java 8 -->
    </dependency>

</dependencies>

Error log shows that an id is set to null when inserting. Normally this is solved by updating the hsqldb version, but it is already up to date.

why_vincent
  • 1,920
  • 8
  • 30
  • 46
  • 1
    Any information on which function is not supported? – Thomas Dec 21 '16 at 12:16
  • 1
    Pls show the exception stack trace. – KayV Dec 21 '16 at 12:18
  • Probably the version of `hsql` is causing issue. – Bacteria Dec 21 '16 at 12:30
  • 2
    So you performed some operation (shown in the stack trace), this operation sent some SQL (shown in the log), and an exception was caught. We see none of that, and you do. You can see where this is heading ... –  Dec 21 '16 at 13:31
  • Got it, I need to update my question. Just added the error log, starting when the schema is ready. Is there any way to get a better picture of what is going on here? Might still be the version, but I have a fairly new version of hsql and changing that doesn't seem to help. – why_vincent Dec 21 '16 at 14:31
  • `insert into Company (id, name) values (null, ?)`. Could you show a definition of Company entity ? – krokodilko Dec 21 '16 at 19:47
  • Added the company defenition and added a couple of dependencies it has. I don't think that they are the problem, the entities are taken from another project where they have been working. – why_vincent Dec 22 '16 at 11:45
  • Not sure it related to a problem, but you are using hsql, but in persistence.sql you specified MySQL syntax – Stan Jan 02 '17 at 09:27
  • That is true. I updated the question, I've removed the persistence xml and use only javaconfig now. There is no more MySQL reference. Still not working sadly. – why_vincent Jan 02 '17 at 09:32
  • try remove of init of customers member in the company class, I.e. remove the Lists.newArrayList() assingment – Soccertrash Jan 02 '17 at 09:37
  • I made a more simple example of the problem and put in the question. The customers are not the problem here, thanks anyway however. – why_vincent Jan 02 '17 at 09:48
  • @why_vincent If possible try to use hibernate version 4.2.8 and hsqldb 2.2.9. Think this configuration mentioned as workable so you can check if this is something from your codebase or is it's a versions conflict – Stan Jan 02 '17 at 10:00
  • Can you turn on your SQL log in Hibernate? What's that function that isn't supported? – Lukas Eder Jan 02 '17 at 10:26
  • In the error log it says "Hibernate: insert into NameHolder (id, name) values (null, ?)" before crashing. There seems to be an id insertion of null, but I don't know why. I don't know how to add more logging than there already is in the pst. – why_vincent Jan 02 '17 at 10:31

2 Answers2

3

The "class" org.hsqldb.jdbc.jdbcConnection doesn't seem to be present in code in HSQLDB source code repo (for v2.3.4). There is a class JDBCConnection, but nowhere does it call a class org.hsqldb.jdbc.Util which also does not exist in v2.3.4, so I suggest that you look at which version of HSQLDB is actually being used. Those classes were present in HSQLDB v1.x but NOT in v2.x so you are actually seemingly using HSQLDB v1.x (somewhere in your CLASSPATH)

Neil Stockton
  • 10,531
  • 3
  • 28
  • 27
  • Thanks! This explains the behaviour. I looked at the CLASSPATH by executing System.getProperty("java.class.path") during runtime. The only hsqldb reference I am finding says: ....m2/repository/org/hsqldb/hsqldb/2.3.4/hsqldb-2.3.4.jar. I think you are right, but how do I find where this older version could be hiding? Probably inside another dependency but how do I track that down? – why_vincent Jan 02 '17 at 10:13
  • if starting via Maven then look at dependencies, and use "--debug". Print out the System classpath (Java class "System") depending on your environment. – Neil Stockton Jan 02 '17 at 10:35
  • I did that but there is only one hit when I search for hsqldb and it is of the latest version. – why_vincent Jan 02 '17 at 13:17
  • HSQLDB v1.x is in groupId "hsqldb", and artifactid "hsqldb" and will be in the CLASSPATH somewhere (or within one of the other jars). Nowhere else it can be. – Neil Stockton Jan 02 '17 at 15:30
  • Possibly within something else that I can't identify, but using CTRL+F on the classpath and looking for hsqldb only gives me latest version. If it would be contained in something else then I don't know how to identify that. A whole lot of work trying to open all jars individually and see if they have something bundled in them. – why_vincent Jan 03 '17 at 14:12
  • so work backwards, from the class itself ... https://stackoverflow.com/questions/227486/find-where-java-class-is-loaded-from#227569 – Neil Stockton Jan 03 '17 at 19:02
0

This class org.hsqldb.jdbc.Util is present till (v2.2.9) of hsqldb in src. But not after that. So only possible reason seems like old jar file somewhere in your classpath.

Refer: How to clean old dependencies from maven repositories?

Is there a simple way to remove unused dependencies from a maven pom.xml?

Community
  • 1
  • 1
Gurpreet Singh
  • 340
  • 3
  • 9