实体:
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中 - &gt;我连接到数据库。 (这似乎是正确的,因为我创建了表格)
我只尝试在一张小桌子上读写一些,但我尝试的所有内容总是给我错误。这个错误,我不知道如何解决它。我看到了所有有价值的名字,我想我没有拼错它。
有人能告诉我这是什么问题,为什么? (这个帮助我真的很快:/)
答案 0 :(得分:0)
在persistence.xml中,我将validate更改为updatet似乎:
<property name="hibernate.hbm2ddl.auto" value="update"/>
我运行我的程序,它创建了我的表。
问题是kordirko写的:我用命令'Eredmenyek'创建了表和列,但是(数据库没有显示这个)数据库就像用大写创建它一样。在此之后,如果我尝试使用大写的'EREDMENYEK'或'Eredmenyek'或其他任何东西,那么没有什么是好的。
在此之后我创建了表格,我将其设置为验证:
<property name="hibernate.hbm2ddl.auto" value="validate"/>