这是我在这个问题上苦苦挣扎的第二天。我们有一个使用 spring 和 hibernate 的网络应用程序。现在我们正在尝试向命令行公开一些功能。所以我们应该能够从命令行运行一个类(没有 web 应用程序),所以它应该可以访问 spring 和 hibernate。
<context:annotation-config/>
<context:component-scan base-package="com.x.y.z"/>
<jpa:repositories base-package="com.x.y" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="jpaProperties">
<props>
<prop key="javax.persistence.validation.mode">NONE</prop>
<prop key="hibernate.validator.apply_to_ddl">false</prop>
<prop key="hibernate.validator.autoregister_listeners">false</prop>
<prop key="hibernate.format_sql">false</prop>
</props>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false" />
<property name="database" value="SQL_SERVER" />
<property name="showSql" value="false" />
</bean>
</property>
</bean>
在这里,我使用的是LocalEntityManagerFactoryBean但似乎没有办法为其设置数据源。它来自persistance.xml
如果我使用LocalContainerEntityManagerFactoryBean我可以设置数据源(它有数据源属性)
持久性.xml:
<persistence version="1.0" 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_1_0.xsd">
<persistence-unit name="oms-jpa">
<class>com.domain.User</class>
</persistence-unit>
在persistance.xml 中,我没有为数据源定义任何数据库信息,因此LocalEntityManagerFactoryBean 不适用于此。
我得到了什么:
Error creating bean with name 'entityManagerFactory' defined in file [C:\Users\ekamoliddinov\IdeaProjects\web\conf\spring-config.xml]: Invocation of init method failed; nested exception is java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation
谷歌搜索然后有人说:
- Jar 版本搞砸了
- jee-api.jar 丢失
但我有jee-api.jar。
我的问题:
- 是什么导致了上述异常?
- 我可以
LocalContainerEntityManagerFactoryBean
在没有 Web 容器的情况下使用吗?Spec对此没有说什么。 - 如果我不能使用
LocalContainerEntityManagerFactoryBean
,那么我该如何设置 LocalEntityManagerFactoryBean 所以它应该使用我的数据源而不是来自persistance.xml(我不能在persistance.xml 中定义任何东西)。
我正在使用带有休眠 4.1.8.Final 的 spring 版本 3.1.3,并且我在命令行中(我没有 jee 环境)
对多个问题感到抱歉,但我认为所有问题都源于同一个根源。
任何帮助将不胜感激。谢谢。