次のモデルの EclipseLink を使用してデータベース テーブルを生成すると、例外が発生します。
@Entity
@Table(name="RXRACTSPOT")
public class ActivitySpot implements Serializable,IsSerializable {
.....
@OneToMany
private Map<CustomAttributeDefinition, CustomAttributeRestriction> customAttributes;
--
@Entity
@Table(name="RXRCUSTATTRREST")
public class CustomAttributeRestriction implements Serializable
--
@Entity
@Table(name="RXRCUSTATTRDEF")
public class CustomAttributeDefinition implements Serializable
次の例外が発生します。
スレッド「メイン」での例外 javax.persistence.PersistenceException: Exception >[EclipseLink-0] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.IntegrityException
記述子の例外:
例外 [EclipseLink-93] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DescriptorException 例外の説明: テーブル [RXRCUSTATTRREST] がこの記述子に存在しません。記述子: RelationalDescriptor(com.rubiconred.activitystream.core.model.ActivitySpot --> [DatabaseTable(RXRACTSPOT)])
ランタイム例外:
java.lang.IndexOutOfBoundsException: インデックス: 0、サイズ: 0
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:417)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:164)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:221)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:209)
at com.rubiconred.activitystream.database.ActivityStreamDatabaseUtils.dropAndCreateTables(ActivityStreamDatabaseUtils.java:64)
at com.rubiconred.soauiext.server.db.CreateOneSpotDatabases.main(CreateOneSpotDatabases.java:16)
原因: 例外 [EclipseLink-0] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.IntegrityException
RXRACTSPOT のマップを削除すると、テーブル RXRCUSTATTREST および RXRCUSTATTRDEF が正常に作成されます。Map ではどちらのテーブルも作成されず、例外がスローされます。マップにいくつかの注釈が欠けていると思われますが、エンティティとしてキーと値の両方を持つマップの例を見つけることができませんでした。