2012-05-10 78 views
1

我遇到一個異常生成以下模型用的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既不創建表格,也拋出異常。我懷疑我在地圖上缺少一些註釋,但我一直無法找到一個具有鍵和值的地圖作爲實體的示例。

+0

你知道了嗎?我在2.5.0-M6上遇到同樣的問題 –

回答

1

看起來像一個錯誤。嘗試最新版本,如果仍然存在,請記錄一個錯誤。

您也可以創建另一個實體類來表示三向連接表而不是使用映射。