持久性无法识别实体类

我正在开发一个关于我国一些彩票的 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;

以及我用来插入数据库的代码:Numbers


public 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();

}

持久性单元可以识别我所有的实体类,但不能识别这个,我不知道如何解决这个问题......


忽然笑
浏览 85回答 3
3回答

杨__羊羊

我遇到了同样的问题,这里的答案都没有解决它。我的解决方案是将我的 EclipseLink 版本从 2.5.1 更新到最新版本 2.7.7。

沧海一幻觉

此错误的常见原因:较旧的持久性 .xml 文件位于不这样做的类路径上 有你的彩票。数字输入。用于获取 EntityManager 的类装入器不是同一个类装入器 加载了您传递给 em.persist 调用。第一个问题更为常见,通过启用 EclipseLink 日志记录,然后在部署持久性单元时检查日志以查看加载了哪些类和映射,可以更轻松地找到。它的变体只是部署了错误的 jar,首先在类路径上有一个较旧的 jar 等。EclipseLink 使用该类在哈希映射中查找元数据,因此如果使用不同的类加载器,它将找不到任何内容。这是一个不太常见的问题,取决于您加载 EntityManagerFactory 和容器类装入器结构的方式。您会遇到多个 JPA 实体的问题,但这也取决于它们来自哪里。

12345678_0001

Persist 只接受实体,而不是列表。因此,您必须遍历数组并分别保留每个 Numbers 对象。&nbsp;for&nbsp;(Numbers&nbsp;n&nbsp;:&nbsp;ans)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;em.persist(ans); &nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java