これは、この問題に苦労している 2 日目です。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
グーグルで検索すると、次のように言う人もいます:
- Jar のバージョンがめちゃくちゃ
- jee-api.jar がありません
しかし、私は jee-api.jar を持っています。
私の質問:
- 上記の例外の原因は何ですか?
LocalContainerEntityManagerFactoryBean
Web コンテナーがなくても使用できますか? 仕様はこれについて何も述べていません。- 使用できない場合
LocalContainerEntityManagerFactoryBean
、LocalEntityManagerFactoryBean を設定して、persistance.xml からではなくデータソースを使用する方法を教えてください (persistance.xml では何も定義できません)。
私はSpringバージョン3.1.3をhibernate 4.1.8.Finalで使用しており、コマンドラインを使用しています(jee環境はありません)
複数の質問で申し訳ありませんが、すべての質問は同じ根本から生じていると思います。
どんな助けでも大歓迎です。ありがとう。