Persistence for Hashmap<Integer,Object>



我得到这些错误试图映射一个Hashmap我不知道如何解决这个问题。Netbeans 8.1Jpa 2.1

映射
@Entity
@Table(name = "libros")
public class Libro implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idlibro", nullable = false)
private int idlibro;
@Column(name = "isbn", nullable = false, length = 50, unique = true)
private long isbn;
@Column(name = "titulo", nullable = false, length = 200, unique = false)
private String titulo;
@Column(name = "anio", nullable = true, length = 4, unique = false)
private int anio;
@Column(name = "idioma", nullable = true, length = 50, unique = false)
private String idioma;
@JoinColumn(name = "idautor", referencedColumnName = "idautor", insertable=false, updatable=true)
@ManyToOne(optional = false)
private Autor elautor;
@Column(name = "genero", nullable = true, length = 50, unique = false)
private String genero;
@JoinColumn(name = "ideditorial", referencedColumnName = "ideditorial", insertable=false, updatable=true)
@ManyToOne(optional = false)
private Editorial laeditorial;
@ElementCollection
@MapKeyColumn(name="nrocopia")
@Column(name="ejemplares")
@CollectionTable(name="ejemplares", joinColumns=@JoinColumn(name="idejemplar"))
private HashMap<Integer, Ejemplar> ejemplarlibro;

@Column(name = "estado", nullable = true, length = 50, unique = false)
private String estado;
javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException异常描述:Deployment of PersistenceUnit [BibliotecaTPFINALPU] failed。关闭此PersistenceUnit的所有工厂。内部异常:Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.IntegrityException

描述符例外:

Exception [EclipseLink-138] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DescriptorException异常描述:属性[ejemplarlibro]的类型为[class java.util]。但映射使用透明间接(延迟加载),要求它是[IndirectMap]的超类。映射:org.eclipse.persistence.mappings.DirectMapMapping [ejemplarlibro]描述符:RelationalDescriptor(一堂课。Libro -> [DatabaseTable(libros)])

运行时异常:

at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:820)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:760)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:182)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getDatabaseSession(EntityManagerFactoryImpl.java:527)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:140)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:177)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at Jpa.ControladorPersistencia.getEmf(ControladorPersistencia.java:20)
at Controladores.BibliotecaControlador.<init>(BibliotecaControlador.java:54)
at bibliotecatpfinal.BibliotecaMain.main(BibliotecaMain.java:46)

由:Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException引起异常描述:Deployment of PersistenceUnit [BibliotecaTPFINALPU] failed。关闭此PersistenceUnit的所有工厂。内部异常:Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.IntegrityException描述符异常:

正如@Neil Stockton在他的评论中所说。解决方案是将HashMap的声明更改为接口Map

private HashMap<Integer, Ejemplar> ejemplarlibro;

private Map<Integer, Ejemplar> ejemplarlibro;

相关内容

最新更新