私はこの問題に数日から取り組んできましたが、解決策はありません。ここに質問を投稿することで、正しい方向に進むことができれば幸いです。私は多くのフォーラムを閲覧し、すべてが私が従ったのと同じ手順を述べました(以下に述べられています)、それでもデータソースへのアクセスで同じ実行時例外が発生します。
Exception -
org.hibernate.exception.SQLGrammarException: Could not open connection
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:122)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
Caused by: java.sql.SQLNonTransientException: [jcc][t4][10205][11234][4.11.88] Null userid is not supported. ERRORCODE=-4461, SQLSTATE=42815 DSRA0010E: SQL-Status = 42815, Fehlercode = -4'461
at com.ibm.db2.jcc.am.gd.a(gd.java:676)
環境-Hibernate、JPA 2.0、DB2、Websphere 8.0、RAD、Java EE6Deploymnet。
Websphere JDBC/Sampleにデータソースを作成しました。データソースのDBクレデンシャルを使用してJ2C認証を作成しました。コンテナ管理認証を介してデータソースに認証を割り当てました。
Web.xmlエントリ
resource-ref res-ref-name Sample res-type javax.sql.DataSource res-auth Container res-sharing-scope Shareable resource-ref
Ibm-web-bnd.xmlエントリー
resource-ref name="jdbc/Sample" binding-name="java:comp/env/jdbc/Sample"
Persistence.xml
persistence-unit name="samplePool" transaction-type="JTA" provider org.hibernate.ejb.HibernatePersistence jta-data-source jdbc/Sample properties property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" property name="hibernate.dialect" value="org.hibernate.dialect.DB2390Dialect" properties persistence-unit persistence
Dao内のコード
eMgrFactory = Persistence.createEntityManagerFactory("samplePool"); entityMgr = eMgrFactory.createEntityManager(); entityMgr.createNativeQuery();
管理コンソールを介してデータソースを作成した後、接続を正常にテストできることに注意してください。また、コードを介してアクセスできるコンポーネント管理認証Iamを指定する場合にも注意してください。コンテナ管理認証を介してアクセスする方法をアドバイスします。