0

ダンプを取得する永続化を行うと、次のエンティティがあります。フィールド文字列値に移動します(これは、(vacation、WORK_ACCIDENT などの値を持つ ID タイプ文字列があるモデルが定義されている方法です...だから変更できません)それ)そしてエラーは

タイプ INTEGER の文字ストリング形式が無効です。

@Entity
public class LeaveReType {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private String id;

ID タイプが文字列の別のエンティティがあり、そこに移動すると永続性が正常に機能します。ID の注釈を使用して、この制限を無視できますか?

Exception in thread "main" javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLDataException: Invalid character string format for type INTEGER.
Error Code: 20000
Call: INSERT INTO LESTTYPE (ID, AVAILABLEBALANCE, ENTITLEMENT, NAME, PENDINGITEMS) VALUES (?, ?, ?, ?, ?)
    bind => [5 parameters bound]
Query: InsertObjectQuery(LESTTYPE [id=WORK_ACCIDENT, name=Work Accident, entitlement=n/a, availableBalance=n/a, pendingItems=0 pending items])

私も試してみましたが、同じエラーが発生しました

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@TypeConverter(dataType = Long.class, name = "id")
private String id;
4

1 に答える 1

0

データベース タイプが NUMBER の場合、オブジェクト タイプを String にしたい場合は、Converter を使用してタイプを変換する必要があります。

すなわち @TypeConverter(dataType=Long.class)

しかし実際には、データベース タイプが NUMBER の場合、Java では数値型を使用する必要があります。必要に応じて、String を取る get/set メソッドを使用することもできます。String 型で @GeneratedValue を使用するのも奇妙です。

于 2013-03-19T13:24:28.160 に答える