私は悪夢の中で生きています。依存症の悪夢です ;)
Hibernate 3 を使用する EJB アプリケーションをテストしています。
次のいずれかでデプロイします。
WebSphere 8 (EAR に組み込まれた EJB JAR) で、これは私の希望するターゲット環境です。そこではうまく機能します。私たちの組織の標準に従って、(Hibernate) 依存関係は別のプロセスで処理されます。そこで次の Hibernate 依存関係を取得しているようです。
org.hibernate:hibernate-validator:3.1.0.ga
org.hibernate:hibernate-search:3.1.1.ga
org.hibernate:hibernate-entitymanager:3.4.0.ga
org.hibernate:hibernate-commons-annotations:3.1.0.ga
org.hibernate:hibernate-annotations:3.4.0.ga
org.hibernate:hibernate-c3p0:3.3.2.ga
*org.hibernate:hibernate-core:3.3.2.ga
*org.hibernate:hibernate-ehcache:3.3.2.ga
*org.hibernate:hibernate-jbosscache:3.3.2.ga
*org.hibernate:hibernate-jbosscache2:3.3.2.ga
*org.hibernate:hibernate-jmx:3.3.2.ga
*org.hibernate:hibernate-oscache:3.3.2.ga
*org.hibernate:hibernate-proxool:3.3.2.ga
*org.hibernate:hibernate-swarmcache:3.3.2.ga
*
組み込み JBOSS 7 にデプロイする Arquillian テスト (EAR にシュリンクラップされた JAR としての EJB) として (
jboss.as.jpa.managed=false
)。そこではうまくいきません。さまざまな依存関係のセットを試しましたが、これは私が確実に必要としていることがわかっている最小セットです。org.hibernate:ejb3-persistence:jar:1.0.2.GA
org.hibernate:hibernate-annotations:jar:3.4.0.GA
org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final
org.hibernate:hibernate-c3p0:3.3.2.ga
*org.hibernate:hibernate-core:3.3.2.ga
*org.hibernate:hibernate-ehcache:3.3.2.ga
*org.hibernate:hibernate-jbosscache:3.3.2.ga
*org.hibernate:hibernate-jbosscache2:3.3.2.ga
*org.hibernate:hibernate-jmx:3.3.2.ga
*org.hibernate:hibernate-oscache:3.3.2.ga
*org.hibernate:hibernate-proxool:3.3.2.ga
*org.hibernate:hibernate-swarmcache:3.3.2.ga
*
これは私が得ているエラーです:
java.lang.IllegalArgumentException: Parameter value element [INCLUDED] did not match expected type [org.hibernate.type.EnumType]
at org.hibernate.ejb.AbstractQueryImpl.validateCollectionValuedParameterMultiBinding(AbstractQueryImpl.java:385)
at org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:363)
at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:343)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:370)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:67)
...
これは私が実行しているコードです:
MyStatusEnum[] statuses = ...;
String queryString = "from MyEntity where statusCode in (:statuses)";
Query query = getEntityManager().createQuery(queryString);
query.setParameter("statuses", Arrays.asList(statuses));
エンティティ フィールドは次のようになります。
@Column(name="STATUS_CD", nullable=false)
@Enumerated(EnumType.STRING)
public MyStatusEnum getStatusCode() ...
あなたの助けに感謝します!