我正在开发一个关于我国一些彩票的 java 程序,它有一个包含乐透和其他号码的数据库。实体类没有问题,但是当我运行问题时,我的持久性单元无法识别一个实体类。我是 java 的初学者,提前致谢。下面是实体类:Numbers@Entity@Table(name = "NUMBERS")@XmlRootElement@NamedQueries({ @NamedQuery(name = "Numbers.findAll", query = "SELECT n FROM Numbers n") , @NamedQuery(name = "Numbers.findById", query = "SELECT n FROM Numbers n WHERE n.id = :id") , @NamedQuery(name = "Numbers.findByNum", query = "SELECT n FROM Numbers n WHERE n.num = :num AND n.lotto = :lotto") , @NamedQuery(name = "Numbers.findByAssociated", query = "SELECT n FROM Numbers n WHERE n.num = :num AND n.associated = :associated AND n.lotto = :lotto") , @NamedQuery(name = "Numbers.findByLotto", query = "SELECT n FROM Numbers n WHERE n.lotto = :lotto")})public class Numbers implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "ID") private Integer id; @Basic(optional = false) @Column(name = "NUM") private int num; @Basic(optional = false) @Column(name = "ASSOCIATED") private int associated; @Basic(optional = false) @Column(name = "LOTTO") private String lotto;以及我用来插入数据库的代码:Numberspublic static boolean insertAlert(EntityManager em, Numbers an) { boolean success = false; Alert alert = Check.createAlert(Check.CONFIRMATION, "Añadir números asociados", "¿Deseas añadir estos números?"); Optional<ButtonType> result = alert.showAndWait();}持久性单元可以识别我所有的实体类,但不能识别这个,我不知道如何解决这个问题......
3 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
此错误的常见原因:
较旧的持久性 .xml 文件位于不这样做的类路径上 有你的彩票。数字输入。
用于获取 EntityManager 的类装入器不是同一个类装入器 加载了您传递给 em.persist 调用。
第一个问题更为常见,通过启用 EclipseLink 日志记录,然后在部署持久性单元时检查日志以查看加载了哪些类和映射,可以更轻松地找到。它的变体只是部署了错误的 jar,首先在类路径上有一个较旧的 jar 等。
EclipseLink 使用该类在哈希映射中查找元数据,因此如果使用不同的类加载器,它将找不到任何内容。这是一个不太常见的问题,取决于您加载 EntityManagerFactory 和容器类装入器结构的方式。您会遇到多个 JPA 实体的问题,但这也取决于它们来自哪里。
12345678_0001
TA贡献1802条经验 获得超5个赞
Persist 只接受实体,而不是列表。
因此,您必须遍历数组并分别保留每个 Numbers 对象。
for (Numbers n : ans) { em.persist(ans); }
添加回答
举报
0/150
提交
取消