Edit1: когда 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.
Как я могу решить эту проблему?
Мне нужно получить данные из таблицы в db2 с помощью jpa. Когда я пытаюсь выполнить запрос с помощью диспетчера сущностей, я получаю ошибки, не зная, в чем именно проблема. Мой код работает на MS-SQL и HSQL-DB... Но я подключаю DB2 с сообщением об ошибке: *
Запрос qry = em.createQuery("из холдинга h, где h.RDeleted=:arg1");-
13:26:38,135 ОТЛАДКА SQL: выберите холдинг0_.HoldingId как HoldingId1_, холдинг0_.RDeleted как RDeleted1_, холдинг0_.InsertDate как InsertDate1_, холдинг0_.SavesUserId как SavesUse4
, холдинг0_.UpdateDate как UpdateDate1_, холдинг0_.Updater как Updater1_, холдинг0_.Description как Descript7WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703 15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
, Holding0_.HoldingName как HoldingN8WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703 15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
из Holding Holding0_, где Holding0_.RDeleted=? Hibernate: выберите холдинг0_.HoldingId как HoldingId1_, холдинг0_.RDeleted как RDeleted1_, холдинг0_.InsertDate как InsertDate1_, холдинг0_.SavesUserId как SavesUse4WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703 15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
, холдинг0_.UpdateDate как UpdateDate1_, холдинг0_.Updater как Updater1_, холдинг0_.Description как Descript7WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703 15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
, холдинг0_.HoldingName как HoldingN8WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703 15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
из Холдинга 0_ где холдинг0_.RDeleted=? 13:26:38,428 ПРЕДУПРЕЖДЕНИЕ SqlExceptionHelper: ошибка SQL: -99999, SQLState: 42703 13:26:38,428 ОШИБКА SqlExceptionHelper: обнаружено неопределенное имя столбца.WARN SqlExceptionHelper: SQL Error: -99999, SQLState: 42703 15:15:22,025 ERROR SqlExceptionHelper: An undefined column name was detected.
Но это запрос работает:
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>
Мой менеджер сущностей:
<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;