当前位置: 首页 > 知识库问答 >
问题:

使用ObjectDB(Java)时,出现错误javax.persistence.未找到Perstemence Exception Type xxx(错误301)

葛承德
2023-03-14

我在学校使用ObjectDB,在做作业时遇到了问题。

问题是:

Exception in thread "main" [ObjectDB 2.8.7] DELETE FROM  ==> Jugador <== 
javax.persistence.PersistenceException
Type Jugador is not found (error 301)
 (position 12)  at com.objectdb.jpa.JpaQuery.executeUpdate(JpaQuery.java:805)
    at com.mycompany.objectdb.NewMain.eliminarDatos(NewMain.java:89)
    at com.mycompany.objectdb.NewMain.main(NewMain.java:38)
Caused by: com.objectdb.o.TEX: Type Jugador is not found
    at com.objectdb.o.MSG.b(MSG.java:110)
    at com.objectdb.o.TRS.b(TRS.java:214)
    at com.objectdb.o.SYR.g(SYR.java:261)
    at com.objectdb.o.SYR.f(SYR.java:190)
    at com.objectdb.o.QRC.<init>(QRC.java:158)
    at com.objectdb.o.QRM.Z1(QRM.java:272)
    at com.objectdb.o.MST.Z1(MST.java:1026)
    at com.objectdb.o.WRA.Z1(WRA.java:313)
    at com.objectdb.o.WSM.Z1(WSM.java:117)
    at com.objectdb.o.QRR.k(QRR.java:260)
    at com.objectdb.o.QRR.i(QRR.java:154)
    at com.objectdb.jpa.JpaQuery.executeUpdate(JpaQuery.java:791)
    ... 2 more
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:764)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:711)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:289)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------

有我的主要和我的类"Jugador",这是不存在的参考。

程序包com。我的公司。objectdb;

导入javax。坚持不懈导入java。实用工具。;导入java。文本ParseException;导入java。文本SimpleDataformat;导入java。util。登录中。数量导入java。util。登录中。记录器;

公共类NewMain{

public static EntityManagerFactory emf;
public static EntityManager em;
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int opcion = -1;
    int opcion3 = -1;
    
    while (opcion != 0) {
        System.out.println("0. Cerrar aplicación");
        System.out.println("1. Conexión a BBDD");
        System.out.println("2. Reiniciar datos");
        System.out.println("3. Aplicacion");
        System.out.println("");
        try {
            System.out.println("¿Qué desea hacer?");
            opcion = in.nextInt();
            System.out.println("");
            
            switch (opcion) {
                case 0:
                    break;
                case 1:
                    inicializaFactory();
                    break;
                case 2:
                    inicializaFactory();
                    eliminarDatos(em);
                    reiniciarDatos(em);
                case 3:
                    System.out.println("Has elegido aplicación");
                    System.out.println("Selecciona lo que desea hacer");
                    System.out.println("1. Insertar objeto");
                    System.out.println("2. Modificar objeto");
                    System.out.println("3. Borrar objeto");
                    System.out.println("4. Realizar consulta");
                    opcion3 = in.nextInt();
                        if (opcion3== 1) {
                            inicializaFactory();
                            Expulsion2OP2.insJPQLT2(em);
                        } else if (opcion3 == 2) {
                            inicializaFactory();
                            Expulsion2OP2.modifJPQLT2(em);
                        } else if (opcion3 == 3) {
                            inicializaFactory();
                            Expulsion2OP2.borradoJPTLT2(em);
                        } else if (opcion3 == 4) {
                            inicializaFactory();
                            Expulsion2OP2.consultaJPTLT2(em);
                        } else {
                            System.out.println("No existe ningún método asignado a ese número");
                            opcion3 = in.nextInt();
                        }
                    
                break;
                
                default:
                System.out.println("Escribe un número entre el 0 y el 3");
            }
        } catch (InputMismatchException e) {
            System.out.println("Inserta un valor válido");
            in.next();
        }
  }
    if (em != null){
        em.close();
        emf.close();
    }
}
public static void inicializaFactory(){
    emf=Persistence.createEntityManagerFactory("./db/proyecto.odb");
    em=emf.createEntityManager();
    System.out.println("Conexión exitosa");
    System.out.println("");
}
public static void eliminarDatos(EntityManager em){
    // Eliminar
    em.getTransaction().begin();
    em.createQuery("DELETE FROM Jugador").executeUpdate();
    em.createQuery("DELETE FROM Partido").executeUpdate();
    em.createQuery("DELETE FROM Expulsion").executeUpdate();
    em.getTransaction().commit();
    System.out.println("");
    System.out.println("Datos eliminados con éxito");
}
public static void reiniciarDatos(EntityManager em){
    //Crear
    em.getTransaction().begin();
    Jugador j1 = new Jugador("8","Griezmann","Atlético de Madrid","8","Delantero");
            em.persist(j1);
    Jugador j2 = new Jugador("23","Pedri","F.C Barcelona","16","Delantero");
            em.persist(j2);
    Jugador j3 = new Jugador("55","Pau Torres","Villarreal","4","Defensa");  
            em.persist(j3);
    Partido p1 = new Partido("442","Atlético de Madrid","Osasuna","Semifinal Copa del Rey","Wanda Metropolitano");
            em.persist(p1);
    Partido p2 = new Partido("452","F.C Barcelona","Betis","Jornada 8 Liga","Camp Nou");
            em.persist(p2);
    Partido p3 = new Partido("447","Sevilla","Villarreal","Jornada 11 Liga","Sanchez Pizjuan");
            em.persist(p3);
    Expulsion e1 = new Expulsion("120","28","Patada en el tobillo",j1,p1);
            em.persist(e1);
    Expulsion e2 = new Expulsion("124","88","Falta por detrás",j2,p2);
            em.persist(e2);
    Expulsion e3 = new Expulsion("126","41","Cabezazo en el pecho",j3,p3);
            em.persist(e3);
    em.getTransaction().commit();
    System.out.println("Los datos han sido reiniciados con éxito");
}

 }

胡加多人

程序包com。我的公司。objectdb;

导入java。io。可序列化;导入javax。坚持不懈基本的导入javax。坚持不懈柱导入javax。坚持不懈实体导入javax。坚持不懈身份证件;

@实体

公共类Jugador实现Serializable{

private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "IDJUGADOR")
private String idjugador;
@Column(name = "NOMBRE")
private String nombre;
@Column(name = "EQUIPO")
private String equipo;
@Column(name = "DORSAL")
private String dorsal;
@Column(name = "POSICION")
private String posicion;

public Jugador() {
    
}

public Jugador(String idjugador){
    this.idjugador = idjugador;
}

public Jugador(String idjugador, String nombre, String equipo, String dorsal, String posicion) {
    this.idjugador = idjugador;
    this.nombre = nombre;
    this.equipo = equipo;
    this.dorsal = dorsal;
    this.posicion = posicion;
}

public String getIdjugador() {
    return idjugador;
}

public void setIdjugador(String idjugador) {
    this.idjugador = idjugador;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public String getEquipo() {
    return equipo;
}

public void setEquipo(String equipo) {
    this.equipo = equipo;
}

public String getDorsal() {
    return dorsal;
}

public void setDorsal(String dorsal) {
    this.dorsal = dorsal;
}

public String getPosicion() {
    return posicion;
}

public void setPosicion(String posicion) {
    this.posicion = posicion;
}

@Override
public String toString() {
    return "Jugador{" + "idjugador=" + idjugador +", nombre=" + nombre + ", equipo=" + equipo + ", dorsal=" + dorsal + ", posicion=" +

位置‘}’;}

}

谢谢你!

共有1个答案

云卓
2023-03-14

JPA需要列出持久性中的所有实体类。xml文件,因此这是使查询中的所有实体类都已知的标准解决方案,甚至在持久化它们的第一个实例之前。

然而,Panagiotis Bougioukos在注释中建议的解决方案也应该有效(并且更简单),即调用em.getMetamodel()。实体(Jugador.class) 在执行查询之前,在同一数据库上,然后该类在查询中也是已知的,不应抛出异常。

 类似资料:
  • 我在InteliJ/Java/RestAssured中收到一个400错误的POST请求,但在Postman中没有,所以谁能告诉我哪里出错了,请先告诉Postman 我的身体参数是 现在,当我发布这篇文章时,我得到了200条回复和一个不错的新访问令牌。当我在Java/RestAssured中尝试同样的方法时,我得到一个400错误的请求错误,这就是我发布的内容。 身体 每次运行这个程序,我都会收到HT

  • Traceback(最近的最后一次调用):文件"C:/用户/AppData/本地/程序/Python/Python37/client.py",第54行,引号=json.loads(urllib.request.urlopen(QUERY.格式(random.random())). read())文件"C:\用户\AppData\本地\程序\Python\Python37\lib\urllib\re

  • 它需要做的是获取用户名和密码,验证它并根据密码给出适当的输出。请帮帮我.也让我知道如果我的怀疑是正确的。另外,我听说在servlet程序中编写html代码不是一个好的做法。我还想知道如何在index.html文件中编写上面的html代码,这应该与该程序预期的行为方式相同。谢了。

  • 大约一到两周前,我就无法使用pip,因为它总是会回退以下错误: 错误:由于环境原因无法安装程序包错误:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):url超过最大重试次数:/packages/1b/e5/552ba6583ab43e12b299458fea94ee23886125b8b8babc91edb03f2ba65/p

  • 编译以下使用Lombok自动生成getter和setter的类时,Checkstyle引发编译错误: 实用工具类不应具有公共或默认构造函数 当Checkstyle没有按照Checkstyle文档中指定的实用程序类定义时,为什么Checkstyle将上面的类归类为实用程序类?即只包含静态方法或字段的类。checkstyle解析的是默认源文本文件还是lombok生成的源文件?

  • 下面是用eclipse IDE编写的Java代码... 线程“main”java.lang.NullPointerException在compile.execute.main(execute.java:17)中出现异常 你能告诉我如何解决这个错误吗?