Проблем с JPA Dialect nosuchmethod изключение

Опитвам се да създам тестова среда за моята компания. Те са избрали да използват JPA, за да се свържат с базата данни на microsoft sql сървъра. Проблемът възниква, когато пресъздадох базата данни и използвайки техния изходен код, не мога да се свържа с нея. Това е грешката junit, която получавам (все още за диалекта, не за junit)

[junit] com.companyname.kernel.persistence.jpa.UnicodeSQLServerDialect.registerColumnType(IILjava/lang/String;)V
[junit] java.lang.NoSuchMethodError: com.companyname.kernel.persistence.jpa.UnicodeSQLServerDialect.registerColumnType(IILjava/lang/String;)V
[junit]     at com.companyname.kernel.persistence.jpa.UnicodeSQLServerDialect.<init>(Unknown Source)
[junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
[junit]     at java.lang.Class.newInstance(Class.java:438)
[junit]     at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:159)
[junit]     at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:136)
[junit]     at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:78)
[junit]     at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:68)
[junit]     at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:165)
[junit]     at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
[junit]     at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
[junit]     at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
[junit]     at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)
[junit]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
[junit]     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
[junit]     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
[junit]     at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
[junit]     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
[junit]     at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)
[junit]     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
[junit]     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
[junit]     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
[junit]     at com.companyname.kernel.services.DBService.start(Unknown Source)
[junit]     at IntegrationUtil.Services.InitiDbservice(Unknown Source)
[junit]     at com.companyname.manage.operation.rejectinvoiceOperationTest.serviceStart(Unknown Source)

След това прочетох малко и открих, че това обикновено се причинява от конфликт на библиотека:

hibernate-commons-annotations.jar 4.0.5 
hibernate-entitymanager.jar
hibernate-c3p0.jar 4.3.8
hibernate-core.jar 4.3.8
hibernate-entitymanager.jar 4.3.8 final
hibernate-validator.jar 5.1.3 final
hibernate-jpa-2.1-api.jar 1.0.0 final
c3p0.jar 0.9.2.1 

Информация за JPA:

<persistence-unit name="TestPU" transaction-type="RESOURCE_LOCAL">      
<properties>
<property name="hibernate.connection.url" value="jdbc:log4jdbc:sqlserver://127.0.0.1:1433;database=JPADB;" />
<property name="hibernate.connection.driver_class" value="net.sf.log4jdbc.DriverSpy" />
<property name="hibernate.dialect" value="com.companyname.kernel.persistence.jpa.UnicodeSQLServerDialect" />
<property name="hibernate.connection.autocommit" value="true" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />


<!-- use c3p0 connection pool -->
<property name="hibernate.c3p0.min_size" value="3" />
<property name="hibernate.c3p0.max_size" value="100" />
<property name="hibernate.c3p0.timeout" value="1800" />
<property name="hibernate.c3p0.max_statements" value="0" />  
</properties>

Код от диалекта:

registerColumnType( Types.VARBINARY, "image" );
    registerColumnType( Types.VARBINARY, 8000, "varbinary($l)" );
    registerColumnType( Types.LONGVARBINARY, "image" );
    registerColumnType( Types.LONGVARCHAR, "text" );
    registerColumnType( Types.BOOLEAN, "bit" );

Ново откритие: Използвах eclipse от моя лаптоп, за да се свържа със сървъра на базата данни и той работи, но когато Дженкинс се опитва да го направи, дава грешка по-горе.

Не можах да намеря нищо нередно с тях, но се надявам някой от вас да отдели време да ми помогне. Всякакви насоки са добре дошли.


person Florenze    schedule 16.02.2015    source източник
comment
Освен това използвам Дженкинс за изпълнение на теста. Когато се опитам да стартирам теста локално, те работят. Опитах се да копирам моята локална db схема в другата db, без зарове. Това предизвика още повече въпроси.   -  person Florenze    schedule 16.02.2015


Отговори (1)


Изпуснах топката на този... Изглежда, че не съм компилирал отново модулите на базата данни, след като промених библиотеките.

Правейки това ми поправи проблема моментално

person Florenze    schedule 17.02.2015