Ошибка:ORA-01461: может связывать значение LONG только для вставки в столбец LONG
Я использую wsdl2java для генерации POJO. Затем добавлены аннотации @Entity к POJOS. Затем используя hbm2ddl для генерации схемы БД и сохранения данных. Это хорошо работает для всех моих файлов класса, кроме одного. Сохраняя POJO в Oracle 11g db, я получаю следующую ошибку
java.sql.BatchUpdateException: ORA-01461: can bind a LONG value only for insert into a LONG column
at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
... 11 more
Не могу понять, что вызывает это? Пожалуйста, помогите мне.
Мой класс POJO -
@Entity
public class ServiceTrain implements java.io.Serializable {
private java.lang.String accountName;
private short applicationModeId;
private java.lang.String cityLocation;
private short countryId;
private java.lang.String customerCompany;
private java.lang.Long customerHoldingId;
private java.util.Calendar lastChangedAt;
private short loadModeId;
private short marketId;
private short marketSegmentId;
private java.lang.String operatorCompany;
private java.lang.Long operatorHoldingId;
private short plantTypeId;
private java.lang.String postalCode;
private java.lang.Integer provinceStateId;
private short responsibleCountryId;
private com.siemens.scr.ServicePlantObjects[] servicePlantObjectsArray;
@Id
private long serviceTrainId;
private java.lang.String streetAddress;
private java.lang.String trainName;
public ServiceTrain() {
}
....
.... <getters & setters>
}
2 ответа
Я действительно не знаю причину этой проблемы. Но эта проблема была решена путем создания нового компонента ServiceTrain каждый раз, когда я вставляю запись в таблицу. По какой-то странной причине это работает нормально.
Я решил это, когда понял, что пытаюсь ввести более 4000 символов в поле Varchar2.
Я уменьшил длину записи, и ошибка исчезла.
В таблице были другие поля NUMBER, которые поначалу сбивали меня с пути.