java - 实体没有定义主键属性 : JPA

标签 java eclipse jpa jakarta-ee eclipselink

我正在使用 Eclipse neon。我是 JPA 新手。我总是收到这个错误。 请帮助解决这个问题。

下面是我的 POJO 类

package myJPA;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;


/**
 * The persistent class for the user_online database table.
 * 
 */
@Entity
@Table(name="user_online")
@NamedQuery(name="UserOnline.findAll", query="SELECT u FROM UserOnline u")

public class UserOnline implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name="mem_id")
     @Id
    private int memId;

    @Temporal(TemporalType.TIMESTAMP)
    private Date time;

    public UserOnline() {
    }

    public int getMemId() {
        return this.memId;
    }

    public void setMemId(int memId) {
        this.memId = memId;
    }

    public Date getTime() {
        return this.time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

}  

我的 persistence.xml 内容如下

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="myJPA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>myJPA.UserOnline</class>
        <properties>
        </properties>
    </persistence-unit>
</persistence>

当我运行主类并出现此错误时,我收到这些错误

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named Eclipselink_JPA
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at myJPA.Main.main(Main.java:13)

Main.java

package myJPA;

import java.sql.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class Main {
public static void main(String[] args) {
    // TODO Auto-generated method stub
     EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );

      EntityManager entitymanager = emfactory.createEntityManager( );
      entitymanager.getTransaction( ).begin( );
      UserOnline u = new UserOnline();
      u.setMemId(999);
      u.setTime(new Date(0));
      entitymanager.persist( u );
      entitymanager.getTransaction( ).commit( );

      entitymanager.close( );
      emfactory.close( );



}

}

最佳答案

EntityManagerFactory 初始化应更改为以下内容:

EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "myJPA" );

您必须提供定义的持久性单元的名称才能从中创建工厂。

关于java - 实体没有定义主键属性 : JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40858859/

相关文章:

eclipse - 使用嵌入式 ActiveMQ JMS 的 Tomcat 配置

eclipse - 将 Tomcat 服务器与 Hibernate 和 Springsource Tool Suite 一起使用?

java - JPA日期不显示小时/分钟/秒

java - 使用 JPA 的 Spring 安全性。如何配置applicationContext-security.XML文件?(使用DaoAuthenticationProvider)

java - 在 @Query JPA Postgresql 中使用 WITH 子句

java - 如何在 Hibernate 中执行这样的查询?加入

java - HSQL 组织.hsqldb.HsqlException : invalid schema name

java - 使用 Eclipse 解决冲突后的 RTC 合并问题

java - 使用 MultiThreadedHttpConnectionManager 为同一个 httpclient 设置不同的套接字超时

java - 在java中创建一组 map 的动态名称