我遇到一個異常生成以下模型用的EclipseLink數據庫表時:JPA:建模地圖<實體,實體>
@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:異常> [的EclipseLink-0](Eclipse持久服務 - 2.1.2.v20101206-r8635):org.eclipse.persistence.exceptions.IntegrityException
描述符例外:
異常[的EclipseLink-93](Eclipse持久服務 - 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持久服務 - 2.1.2.v20101206-r8635):org.eclipse.persistence.exceptions.IntegrityExce ption
如果我刪除了RXRACTSPOT中的映射,那麼表RXRCUSTATTREST和RXRCUSTATTRDEF已成功創建。使用Map既不創建表格,也拋出異常。我懷疑我在地圖上缺少一些註釋,但我一直無法找到一個具有鍵和值的地圖作爲實體的示例。
你知道了嗎?我在2.5.0-M6上遇到同樣的問題 –