0

これは、この問題に苦労している 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 を持っています。

私の質問:

  • 上記の例外の原因は何ですか?
  • LocalContainerEntityManagerFactoryBeanWeb コンテナーがなくても使用できますか? 仕様はこれについて何も述べていません。
  • 使用できない場合LocalContainerEntityManagerFactoryBean、LocalEntityManagerFactoryBean を設定して、persistance.xml からではなくデータソースを使用する方法を教えてください (persistance.xml では何も定義できません)。

私はSpringバージョン3.1.3をhibernate 4.1.8.Finalで使用しており、コマンドラインを使用しています(jee環境はありません)

複数の質問で申し訳ありませんが、すべての質問は同じ根本から生じていると思います。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

0

3日間試した後、問題を修正しました。混乱したjarファイル:)クラスパスに jee-api.jar があり、コマンドラインからコードを実行していたため、Web環境がありませんでした。したがって、私の環境には jee-api.jar の実装はありませんでした。それが上記の例外を与えていた理由です。jee-api.jar を削除して消えました。

私が言えるもう1つのことはLocalContainerEntityManagerFactoryBean、コマンドラインから使用できることです。私はそれを使用しています。

最後に: データソースを次のように設定することはできませんLocalEntityManagerFactoryBean

これは私の誰かへの助けです。

于 2012-12-15T17:07:16.813 に答える