首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate 4: ViolatedConstraintNameExtracter异常

Hibernate 4: ViolatedConstraintNameExtracter异常
EN

Stack Overflow用户
提问于 2014-02-02 19:15:36
回答 2查看 1.8K关注 0票数 1

我正在尝试在Maven项目中设置Hibernate 4。不管用,快把我逼疯了。

我明白这一例外:

代码语言:javascript
运行
复制
java.lang.NoClassDefFoundError: org/hibernate/exception/ViolatedConstraintNameExtracter

这些是在pom.xml文件中声明的依赖项:

代码语言:javascript
运行
复制
 <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.1.Final</version>
</dependency>
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.7.2</version>
</dependency>
<dependency>
    <groupId>org.hibernate.dialect</groupId>
    <artifactId>sqlite-dialect</artifactId>
    <version>0.1.0</version>
    <scope>provided</scope>
</dependency>

这是我的Hibernate配置文件:

代码语言:javascript
运行
复制
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">org.sqlite.JDBC</property>
    <property name="hibernate.connection.password"></property>
    <property name="hibernate.connection.url">jdbc:sqlite:test.db</property>
    <property name="hibernate.connection.username"></property>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLiteDialect</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>

这就是“破烂”代码:

代码语言:javascript
运行
复制
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();        
sessionFactory = configuration.buildSessionFactory(serviceRegistry);

我只有一个名为"User“的测试模型,并使用Hibernate注释进行修饰。

你能帮我做这个吗?干杯。

更新:堆栈跟踪

代码语言:javascript
运行
复制
Initial SessionFactory creation failedjava.lang.NoClassDefFoundError:    org/hibernate/exception/ViolatedConstraintNameExtracter
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.matteopacini.RestaurantManager.HibernateUtil.<clinit>(HibernateUtil.java:27)
at com.matteopacini.RestaurantManager.App.main(App.java:14)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/exception/ViolatedConstraintNameExtracter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at  org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:242)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor    (StrategySelectorImpl.java:125)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:155)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:136)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:78)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:68)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:165)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at com.matteopacini.RestaurantManager.HibernateUtil.<clinit>(HibernateUtil.java:21)
... 1 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.exception.ViolatedConstraintNameExtracter
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 16 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-02 21:34:56

您使用的方言与Hibernate 4不兼容。请参阅https://github.com/gwenn/sqlite-dialect/blob/master/src/main/java/org/hibernate/dialect/SQLiteDialect.java:它使用org.hibernate.exception.ViolatedConstraintNameExtracter,它已在Hibernate 4中移动到org.hibernate.exception.spi.ViolatedConstraintNameExtracter

票数 2
EN

Stack Overflow用户

发布于 2014-02-02 20:45:38

在Hibernate 4.X中,类ViolatedConstraintNameExtracter从包org.hibernate.exception移到org.hibernate.exception.spi (JavaDoc)。错误消息声明没有找到org/hibernate/exception/ViolatedConstraintNameExtracter

这意味着运行时类路径中至少有一个库请求旧的3.xHibernate类。您应该使用Maven 依赖插件或Eclipse检查依赖项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21514980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档