gpt4 book ai didi

java - Hibernate Bean 验证在类路径中不可用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:48:26 25 4
gpt4 key购买 nike

我今天决定试用 Hibernate,它看起来很有前途,尽管设置可能更容易。在为前一百万个左右的配置错误找到解决方案后,我现在陷入了这个问题:

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: manager1] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
(...)
Caused by: org.hibernate.HibernateException: Bean Validation not available in the class path but required in javax.persistence.validation.mode
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyHibernateListeners(BeanValidationIntegrator.java:281)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:134)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
... 5 more

持久化.xml:

<?xml version='1.0' encoding='utf-8' ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>net.zomis.hibernate.Game</class>
<class>net.zomis.hibernate.TestFields</class>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<validation-mode>CALLBACK</validation-mode>
<properties>
<property name="javax.persistence.validation.mode" value="NONE" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
</properties>
</persistence-unit>
</persistence>

hibernate.cfg.xml 的(据我所知)相关部分

<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
(...)
<property name="hbm2ddl.auto" >validate</property>
<mapping class="net.zomis.hibernate.Game" />
<mapping class="net.zomis.hibernate.TestFields" />
</session-factory>
</hibernate-configuration>

我尝试添加 this到构建路径没有任何变化。我在 google 上搜索了 Bean Validation not available in the class path but required in javax.persistence.validation.mode 以及 Bean Validation not available in the class path。我找到了源代码,但这对我帮助不大。

我也试过从 xml 配置文件中删除属性,但没有成功。

使用 Maven。我只是使用 Eclipse 并直接从 Eclipse 构建和运行项目。

显而易见的问题是:我该如何解决这个问题?我是否需要在我错过的构建路径中添加一个额外的 jar? (在那种情况下是哪一个?)还有:为什么需要它?我可以更改某些内容以便不再需要它吗?

最佳答案

您需要拥有 validation-api (有一个下载 JAR 链接,您可以使用,因为您不使用 maven)在您的类路径中。

Hibernate 在类路径中搜索 javax.validation.Validation 类。如果找不到它,它会抛出 Bean 验证在类路径中不可用但在 javax.persistence.validation.mode 中需要 错误。

  • 如果您不使用 Maven,则需要自己构建类路径,这很容易遗漏一个 jar。仅使用 maven 来引导您的项目并确保您拥有所有 jar 可能是值得的。
  • 如果您使用的是 maven,validation-api 将作为 hibernate-validator 的传递依赖项引入。

关于java - Hibernate Bean 验证在类路径中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com