Я пытаюсь вставить свой объект-ученик в таблицу учеников в базе данных mydb, но всегда получаю исключение. Однако подключение к таблице с использованием Connection работает правильно. Я использую Eclipse с EclipseLink.JPA Entity неизвестно
класс сущностей
package student;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "STUDENTS")
public class Student {
@Id
@Column(name = "studentID")
@GeneratedValue
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "GROUPNUM")
private String groupNum;
@Column(name="AVGMARK")
private double avgMark;
public Student(){}
public Student(String name, String groupNum, double avgMark) {
this.name = name;
this.groupNum = groupNum;
this.avgMark = avgMark;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGroupNum() {
return groupNum;
}
public void setGroupNum(String groupNum) {
this.groupNum = groupNum;
}
public double getAvgMark() {
return avgMark;
}
public void setAvgMark(double avgMark) {
this.avgMark = avgMark;
}
}
метод в моем классе
package connector;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public void insertIntoStudents(Student st) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory(
"students");
EntityManager em = factory.createEntityManager();
// Begin a new local transaction so that we can persist a new entity
em.getTransaction().begin();
em.persist(st);
em.getTransaction().commit();
em.close();
}
persistence.xml
<?xml version="1.0" encoding="UTF-8" ?>
<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"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="students" transaction-type="RESOURCE_LOCAL">
<class>student.Student</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost/mydb" />
<property name="javax.persistence.jdbc.user" value="sqluser" />
<property name="javax.persistence.jdbc.password" value="sqluserpw" />
</property></properties>
</persistence-unit>
</persistence>
Исключение
Exception in thread "main" java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type.
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4228)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496)
at connector.DBconnector.insertIntoStudents(DBconnector.java:60)
at Main.main(Main.java:10)
Вы также должны указать импорт. – Ioan
Кроме того, объекты должны иметь конструктор без аргументов. –
@loan Я добавил импорт –