休眠 由以下原因引起:java.sql.SQLException:ORA-00942:表或视图不存在



Entity:

package Model;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table( name="Eredmenyek", schema = "H_C26G18" )
public class Eredmenyek implements Serializable{
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="ID")
private int id;
@Column( name="JATEKOS1" )
private String Játékos1;
@Column( name="JATEKOS2" )
private String Játékos2;
@Column( name="NYERTES" )
int nyertes;

public Eredmenyek(String Játékos1, String Játékos2, int nyertes) {
    this.Játékos1 = Játékos1;
    this.Játékos2 = Játékos2;
    this.nyertes = nyertes;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getJátékos1() {
    return Játékos1;
}
public void setJátékos1(String Játékos1) {
    this.Játékos1 = Játékos1;
}
public String getJátékos2() {
    return Játékos2;
}
public void setJátékos2(String Játékos2) {
    this.Játékos2 = Játékos2;
}
public int getNyertes() {
    return nyertes;
}
public void setNyertes(int nyertes) {
    this.nyertes = nyertes;
}
}

实体经理:

package Model;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
public class EredményekImpl {
private static EntityManager manager;
private static EntityManagerFactory factory;
private static void nyit(){
    factory = Persistence.createEntityManagerFactory("db");
    manager = factory.createEntityManager();
}
private static void zár(){
    manager.close();
    factory.close();
}
public void beírEredmény(String játékos1, String játékos2, int nyertes ){
    nyit();
    manager.getTransaction().begin();
    Eredmenyek e = new Eredmenyek(játékos1, játékos2, nyertes);
    manager.persist(e);
    manager.getTransaction().commit();
    zár();
}
public List<Eredmenyek> olvasEredmény(  ){
    nyit();

    System.out.println("Olvas");
    TypedQuery<Eredmenyek> q = manager.createQuery("SELECT e FROM Eredmenyek e", Eredmenyek.class);
    List<Eredmenyek> result = q.getResultList();
    zár();
    return result; 
}

}

持久性.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="db">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>Model.Eredmenyek</class>
<properties>
  <property name="hibernate.connection.url" value="jdbc:oracle:thin:@db.inf.unideb.hu:1521:ora11g"/>
  <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
  <property name="hibernate.default_schema" value="H_C26G18"/>
  <property name="hibernate.connection.username" value="H_C26G18"/>
  <property name="hibernate.connection.password" value="kassai"/>
</properties>
</persistence-unit>
</persistence>

Eredmenyek.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping>
<class name="Model.Eredmenyek" schema="H_C26G18" table="Eredmenyek">
  <id name="id" type="int" column="ID">
     <generator class="increment"/>
  </id>
  <property name="Játékos1" column="JATEKOS1" type="string"/>
  <property name="Játékos2" column="JATEKOS2" type="string"/>
  <property name="nyertes" column="NYERTES" type="int"/>
</class>
</hibernate-mapping>

我只喜欢从数据库中读取(然后写入):

@FXML
private void listázás(ActionEvent event) {
    listáz.setText("Megnyomtad");
    EredményekImpl a = new EredményekImpl();
    List<Eredmenyek> e = a.olvasEredmény();
    String h = new String();
    System.out.println(e);
    System.out.println("Hello");
    for( Eredmenyek i : e ){
        if( i.getNyertes() == 1 )
            h += i.getJátékos1() + " " + i.getJátékos2()+ "n";
        else
            h += i.getJátékos2() + " " + i.getJátékos1() +"n";
    }
    lista.setText(h);
}

当我喜欢从数据库中读取时:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1768)
....
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
... 47 more
Caused by: javax.persistence.PersistenceException:
org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerIml.java:1692) 
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:492)
at Model.EredményekImpl.olvasEredmény(EredményekImpl.java:46)
at Game.FXMLController_Ranglista.listázás(FXMLController_Ranglista.java:47)
... 57 more
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)
...
... 59 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
...
... 75 more

将创建数据库表和列:架构 : H_C26G18表名:埃雷德门耶克列: ID, JATEKOS1, JATEKOS2, NYERTES

我使用 netbeans,并在 Service/Database/OraleThin -> 中连接到数据库。(这似乎是正确的,因为我创建了表格)

我尝试只在一个小表格中读取和写入一些,但我尝试的所有内容总是给我错误。这个我不知道如何解决的错误。我看到了所有值名称,我想我没有拼写错误。

有人可以告诉我问题是什么,为什么?(这个帮助需要我真的很快:/)

在持久性中.xml我将验证更改为更新似乎:

<property name="hibernate.hbm2ddl.auto" value="update"/>

运行我的程序,它为我创建了表格。

问题是 kordirko 写的:我用名为"Eredmenyek"的命令创建了表和列,但是(数据库没有显示这个)数据库喜欢用大写字母创建它。在此之后,如果我尝试使用大写的"EREDMENYEK"或"Eredmenyek"或其他任何东西,没有什么是好的。

在此之后,我设置了要验证的表:

<property name="hibernate.hbm2ddl.auto" value="validate"/>