2016-09-14 3 views
-1

eclipselink 또는 jpa를 처음 사용했습니다. 나는 eclipselink 튜토리얼을 here에서 따랐다. Test.java 클래스를 실행할 때 다음 예외가 발생합니다. 네트워크를 통해 Oracle 데이터베이스를 사용하고 있습니다. 도와주세요.개체 : 알려진 개체 유형이 아닙니다. Eclipselink

[EL Info]: connection: 2016-09-14 15:13:33.562--ServerSession(271944754)--/file:/D:/Developer/EclipseLink/bin/_TestPersistence login successful 
[EL Warning]: metamodel: 2016-09-14 15:13:33.577--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element 
Exception in thread "main" java.lang.IllegalArgumentException: Object: Employee [name=Mukesh, [email protected] , department=Finance] is not a known Entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4226) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:507) 
    at com.assignment.Test.main(Test.java:28) 

의 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="TestPersistence" 
transaction-type="RESOURCE_LOCAL"> 
<class>com.assignment.Employee</class> 
<properties> 
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" /> 
<property name="javax.persistence.jdbc.url" 
value="jdbc:oracle:thin:@ipaddress:port/servicename" /> 
<property name="javax.persistence.jdbc.user" value="username" /> 
<property name="javax.persistence.jdbc.password" 
value="password" /> 
<!-- EclipseLink should create the database schema automatically --> 
<property name="eclipselink.ddl-generation" value="create-tables" /> 
<property name="eclipselink.ddl-generation.output-mode" 
value="database" /> 
</properties> 
</persistence-unit> 
</persistence> 

Employee.java

package com.assignment; 
public class Employee { 
     private Long id; 
     private String name; 
     private String email; 
     private String department; 

     public Long getId() { 
      return id; 
     } 
     public void setId(Long id) { 
      this.id = id; 
     } 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getEmail() { 
      return email; 
     } 
     public void setEmail(String email) { 
      this.email = email; 
     } 
     public String getDepartment() { 
      return department; 
     } 
     public void setDepartment(String department) { 
      this.department = department; 
     } 
     public String toString() { 
      return "Employee [name=" + name + ", email=" + email + " , department=" 
        + department + "]"; 
     } 
} 

Test.java

package com.assignment; 

import java.util.List; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 
import javax.persistence.Query; 

public class Test { 
    private static final String PERSISTENCE_UNIT_NAME = "TestPersistence"; 
     private static EntityManagerFactory factory; 
     public static void main(String[] args) { 
     factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     EntityManager em = factory.createEntityManager(); 
     em.getTransaction().begin(); 
     Employee emp = new Employee(); 
     emp.setName("Mukesh"); 
     emp.setEmail("[email protected]"); 
     emp.setDepartment("Finance"); 
     em.persist(emp); 
     em.getTransaction().commit(); 
     em.close(); 
     } 
    } 
01,235,

패키지 구조

enter image description here

답변

3

봅니다 Employee 클래스 javax.persistence.Entity 주석을 사용합니다.

더 많은 정보는 EclipseLink 사용의 예 : https://wiki.eclipse.org/EclipseLink/Examples/JPA

+0

이것은 사이트가 찾고있는 답변이 아니며, 이것은 가장 좋고 가난한 의견이며, 기본적으로 "링크 전용 대답"이며 링크가 무용 할 때도 매우 유용합니다. 죽는다. –

1

이 클래스에 @Entity 주석을 지정합니다. 기본 키 ID가 필요할 수도 있으며 속성 중 하나에 @Id를 지정하십시오.

package com.assignment; 

import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
public class Employee { 
     @Id 
     private Long id; 
     private String name; 
     private String email; 
     private String department; 

     public Long getId() { 
      return id; 
     } 
     public void setId(Long id) { 
      this.id = id; 
     } 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getEmail() { 
      return email; 
     } 
     public void setEmail(String email) { 
      this.email = email; 
     } 
     public String getDepartment() { 
      return department; 
     } 
     public void setDepartment(String department) { 
      this.department = department; 
     } 
     public String toString() { 
      return "Employee [name=" + name + ", email=" + email + " , department=" 
        + department + "]"; 
     } 
} 
관련 문제