0

wsdl2java を使用して POJO を生成しています。次に、POJOS に @Entity アノテーションを追加しました。次に、db スキーマの生成とデータの永続化に hbm2ddl を使用します。1つを除くすべてのクラスファイルでうまく機能します。POJO を Oracle 11g データベースに保存しているときに、次のエラーが発生します。

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>
}
4

2 に答える 2

1

Varchar2フィールドに4000以上の文字列を入力しようとしていることがわかったときに解決しました。

エントリの長さを短くすると、エラーはなくなりました。

テーブルには他にも NUMBER フィールドがあり、最初は道に迷いました。

于 2011-11-16T17:35:32.400 に答える
0

この問題の原因は本当にわかりません。しかし、テーブルにレコードを挿入するたびに新しいServiceTrain Beanを作成することで、これを解決しました。奇妙な理由で、これは正常に機能します。

于 2011-08-04T17:24:51.140 に答える