为了账号安全,请及时绑定邮箱和手机立即绑定

持久性无法识别实体类

持久性无法识别实体类

忽然笑 2023-11-01 21:43:39
我正在开发一个关于我国一些彩票的 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贡献1943条经验 获得超7个赞

我遇到了同样的问题,这里的答案都没有解决它。

我的解决方案是将我的 EclipseLink 版本从 2.5.1 更新到最新版本 2.7.7。


查看完整回答
反对 回复 2023-11-01
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

此错误的常见原因:

  1. 较旧的持久性 .xml 文件位于不这样做的类路径上 有你的彩票。数字输入。

  2. 用于获取 EntityManager 的类装入器不是同一个类装入器 加载了您传递给 em.persist 调用。

第一个问题更为常见,通过启用 EclipseLink 日志记录,然后在部署持久性单元时检查日志以查看加载了哪些类和映射,可以更轻松地找到。它的变体只是部署了错误的 jar,首先在类路径上有一个较旧的 jar 等。

EclipseLink 使用该类在哈希映射中查找元数据,因此如果使用不同的类加载器,它将找不到任何内容。这是一个不太常见的问题,取决于您加载 EntityManagerFactory 和容器类装入器结构的方式。您会遇到多个 JPA 实体的问题,但这也取决于它们来自哪里。


查看完整回答
反对 回复 2023-11-01
?
12345678_0001

TA贡献1802条经验 获得超5个赞

Persist 只接受实体,而不是列表。

因此,您必须遍历数组并分别保留每个 Numbers 对象。

 for (Numbers n : ans) {
     em.persist(ans);
 }


查看完整回答
反对 回复 2023-11-01
  • 3 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信