实体:

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;
}


}

Persistence.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
桌子的名字:Eredmenyek
列:ID,JATEKOS1,JATEKOS2,NYERTES

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

我只尝试在一张小桌子上读写,但是我尝试的所有操作总是给我错误。我不知道如何解决此错误。我看到了所有值的名称,我想我并没有拼错它。

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

最佳答案

在persistence.xml中,我将validate更改为updatet:

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


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

问题是kordirko写的是什么:我用名称为'Eredmenyek'的命令创建了表和列,但是(数据库未显示此信息)数据库喜欢使用大写形式创建它。在这之后,如果我尝试使用大写的“ EREDMENYEK”或“ Eredmenyek”或其他任何东西,那没有什么不好。

创建完表格后,我将其设置为验证以下表格:

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

关于java - hibernate 原因:java.sql.SQLException:ORA-00942:表或 View 不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37362271/

10-10 10:56