我正在開發一個關于我國一些彩票的 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
提交
取消