編集1: HibernateがMS-SQLに接続すると、すべての列とテーブルがスキャンされます。ログ
しかし、HibernateがDB2に接続すると、「i」文字を含むすべてのテーブルと列を再度作成(レンダリング)しようとします。ログ
表と列をスキャンした後、すべての文字が大きいことに気付きました。実際、DB2ではすべての文字が大きいことに気付きました。Hibernateは照会に小文字を使用し、DB2は文字の感度が高いため、列名を認識しません。そのため、以下のアラームが発生します。
WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703
15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
どうすればこの問題を解決できますか?
jpaを使用してdb2のテーブルからデータを取得する必要があります。エンティティマネージャを使用してクエリを実行しようとすると、問題が正確にどこにあるのかわからないというエラーが発生します。 私のコードはMS-SQLとHSQL-DBで実行されています...しかし、DB2にメッセージエラーを接続します:*
クエリqry=em.createQuery( "from Holding h where h.RDeleted =:arg1");-
13:26:38,135 DEBUG SQL:holding0_.HoldingIdをHoldingId1_として、holding0_.RDeletedをRDeleted1_として、holding0_.InsertDateをInsertDate1_として、holding0_.SavesUserIdをSavesUse4_1_として、holding0_.UpdateDateをUpdateDate1_として、holding0_.UpdateDateをUpdater1_として、holding0_.UpdaterをUpdater1_として選択します。 、holding0_.HoldingName as HoldingN8_1_ from Holdingholding0_ここでholding0_.RDeleted=?Hibernate:holding0_.HoldingIdをHoldingId1_として、holding0_.RDeletedをRDeleted1_として、holding0_.InsertDateをInsertDate1_として、holding0_.SavesUserIdをSavesUse4_1_として、holding0_.UpdateDateをUpdateDate1_として、holding0_.UpdaterをUpdater1_として、holding0_.UpdaterをUpdater1_として、holding0_.DescriptionをDescript7_1として選択します。保持からholding0_ここでholding0_.RDeleted=?13:26:38,428警告SqlExceptionHelper:SQLエラー:-99999、SQLState:42703 13:26:38,428エラーSqlExceptionHelper:
しかし、クエリは機能します。
Select h.holdingId, h.holdingName, h.description from Holding h
私のデータソース:
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSourceDB2_JT400" destroy-method="close">
<property value="com.ibm.as400.access.AS400JDBCDriver" name="driverClassName"/>
<property value="jdbc:as400://192.168.1.1/GULERP" name="url"/>
<property value="user" name="username"/>
<property value="PW" name="password"/>
<property value="5" name="initialSize"/>
</bean>
私のentityManager:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="erp" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.DB2400Dialect" />
</bean>
</property>
<property name="dataSource" ref="dataSourceDB2_JT400"/>
</bean>
および私のドメイン:
@Entity
@AccessType("field")
@Table(name = "Holding", uniqueConstraints = {@UniqueConstraint(columnNames={"HoldingName"})})
public class Holding extends BaseClass implements Serializable {
transient static final long serialVersionUID = 5473887143181971744L;
@Id
@Column(name = "HoldingId", nullable = false, length=36)
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String holdingId;
@Basic(optional = false)
@Column(name = "HoldingName", nullable = false, length = 100)
private String holdingName;
@Column(name = "Description", length = 210)
private String description;
@OneToMany(mappedBy = "holdingId", fetch = FetchType.LAZY)
private List<Company> companyList;