当使用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“中的org.eclipse.persistence.exceptions.IntegrityException异常:
>EclipseLink-0:javax.persistence.PersistenceException
描述符异常:
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)由: Exception EclipseLink-0:EclipseLink-0引起
如果删除RXRACTSPOT中的Map,则将成功创建RXRCUSTATTREST和RXRCUSTATTRDEF表。使用Map,既不会创建表,也不会引发异常。我怀疑我在Map上缺少了一些注释,但是我一直无法找到一个以键和值作为实体的Map示例。
发布于 2012-05-10 14:28:55
好像是个虫子。尝试最新的版本,如果它仍然发生,请记录一个错误。
您还可以创建另一个实体类来表示三种连接表,而不是使用Map。
https://stackoverflow.com/questions/10525909
复制相似问题