这是我正在努力解决这个问题的第二天。 我们有一个使用spring和hibernate的web应用程序。现在我们试图向命令行公开一些功能。所以我们应该能够从命令行运行一个类(没有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我可以设置数据源(它有数据源属性)
persistance.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
然后有些人说:
但我有jee-api.jar。
我的问题:
LocalContainerEntityManagerFactoryBean
吗?
容器?规格没有说明这一点。 LocalContainerEntityManagerFactoryBean
,我该如何设置
LocalEntityManagerFactoryBean所以它应该使用我的数据源而不是
persistance.xml(我无法在persistance.xml中定义任何内容)。我使用的是带有hibernate 4.1.8.Final的Spring 3.1.3版本,我在命令行中(我没有jee环境)
对于不止一个问题感到抱歉,但所有问题都来自我认为的同一根。
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:0)
尝试3天后,我解决了这个问题。混乱的罐子:) 这是因为我在我的类路径中有jee-api.jar而且我从命令行运行代码,我没有web环境。所以在我的环境中没有任何关于jee-api.jar的内容。这就是它给出上述例外的原因。我删除了jee-api.jar并且消失了。
我可以告诉另一件事:我们可以从命令行使用LocalContainerEntityManagerFactoryBean
。我正在使用它。
最后一件事:我们无法将数据源设置为LocalEntityManagerFactoryBean
这是我对某人的帮助。