java.lang.IllegalArgumentException: неизвестный объект: Model.Point - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь сохранить свой класс Point в базе данных Oracle. Когда пользователь нажимает кнопку в методе index.xhtml (JSF), вызывается savePoint

import javax.persistence.*;
import java.sql.DriverManager;
import java.sql.SQLException;

@Entity
@Table(name = "WEB_LAB3", schema = "S265077")
public class Point {
@Column(name = "X")
private float x;
@Column(name = "Y")
private float y;
@Column(name = "R")
private float r;
@Column(name = "CORRECT")
private int correct; // 0 - некорректно, 1 - корректно
@Column(name = "in")
private int in; // 0 - некорректно, 1 - корректно
@Id @GeneratedValue
@Column(name = "ID")
private int id;

public Point() {
    this.x = 0;
    this.y = 0;
    this.r = 1;
    this.correct = 0;
    this.in = 0;
}

public float getX() {
    return x;
}

public void setX(float x) {
    this.x = x;
}

public float getY() {
    return y;
}

public void setY(float y) {
    this.y = y;
}

public float getR() {
    return r;
}

public void setR(float r) {
    this.r = r;
}

public int getCorrect() {
    return correct;
}

public void setCorrect(int correct) {
    this.correct = correct;
}

public int getIn() {
    return in;
}

public void setIn(int in) {
    this.in = in;
}

public void setId(int id) {
    this.id = id;
}

public int getId() {
    return id;
}

public void savePoint() {
    try {
        DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    } catch (SQLException e) {
        e.printStackTrace();
    }

    EntityManagerFactory factory = Persistence.createEntityManagerFactory("ITMO");
    EntityManager entityManager = factory.createEntityManager();

    entityManager.getTransaction().begin();

    entityManager.persist(this); // <-- mistake here

    entityManager.getTransaction().commit();
    entityManager.close();
    factory.close();
}

}

И я получаю исключение java.lang.IllegalArgumentException: Неизвестная сущность: Модель.Point

В моем pom.xml у меня есть зависимости

<dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.7.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.4.7.Final</version>
    </dependency>

И мой файл persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" 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_2.xsd">
<persistence-unit name="ITMO" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:XE" />
        <property name="javax.persistence.jdbc.user" value="user" />
        <property name="javax.persistence.jdbc.password" value="password" />
        <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />

        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="none" />
    </properties>
</persistence-unit>

Так что мне нужнопонять, есть ли в моем коде ошибка, и попытаться ее исправить.

...