【问题标题】:JPA: Modelling a Map<Entity, Entity>JPA:建模地图<Entity, Entity>
【发布时间】:2012-05-10 00:16:05
【问题描述】:

使用 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

我遇到以下异常:

线程“main”javax.persistence.PersistenceException 中的异常:异常>[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 中的 Map,则成功创建表 RXRCUSTATTREST 和 RXRCUSTATTRDEF。使用 Map 不会创建任何表并引发异常。我怀疑我在地图上遗漏了一些注释,但我一直无法找到将键和值都作为实体的地图的示例。

【问题讨论】:

  • 你发现了吗?我在 2.5.0-M6 上遇到了同样的问题

标签: jpa


【解决方案1】:

看起来像一个错误。尝试最新版本,如果仍然出现,请记录错误。

您还可以创建另一个 Entity 类来表示三向连接表,而不是使用 Map。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2011-09-04
    • 2019-09-09
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2019-01-25
    相关资源
    最近更新 更多