2015-01-29 3 views
0

Oracle 데이터베이스로 작업하기 위해 JPA + Hibernate로 설정하려고합니다. Intellij를 내 데이터 소스에 연결 한 다음 데이터베이스 스키마를 사용하여 지속성 매핑을 생성했습니다. 그러나 나는 다음과 같은 코드를 실행할 때마다 나는java.sql.SQLException : ORA-00942 : 테이블 또는 뷰가 존재하지 않습니다 (Intellij가 생성 한 파일)

오류 (: ORA-00942 : java.sql.SQLException의를 테이블 또는 뷰가 존재하지 않음) : 얻을

public static void main(String[] args) { 
    System.out.println("Maven + Hibernate + Oracle"); 
    PersistenceProvider persistenceProvider = new HibernatePersistence(); 
    EntityManagerFactory entityManagerFactory = persistenceProvider.createEntityManagerFactory(
      "NewPersistenceUnit",new HashMap()); 

    EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    entityManager.getTransaction().begin(); 

    AdministrationUser user = new AdministrationUser(); 

    user.setUserName("mjh"); 
    user.setName("Brendan"); 
    user.setCreateDate(Timestamp.valueOf("2007-09-23 10:10:10.0")); 
    user.setCreateBy("Brendan"); 
    user.setModDate(Timestamp.valueOf("2007-09-23 10:10:10.0")); 
    user.setModBy("Brendan"); 

    entityManager.persist(user); 

    entityManager.getTransaction().commit(); 
} 

의 persistence.xml 내가 의도적으로 url 및 암호와 사용자 이름 만 내 코드에서 나는 동일한 URL을 사용했기 때문에 그들이이 올바른지를 제거한

public class AdministrationUser { 
    private long administrationUserId; 
    private String userName; 
    private String name; 
    private Timestamp createDate; 
    private String createBy; 
    private Timestamp modDate; 
    private String modBy; 

    @Id 
    @Column(name = "administrationUserId", nullable = false, insertable = true, updatable = true, precision = 0) 
    public long getAdministrationUserId() { 
     return administrationUserId; 
    } 

    public void setAdministrationUserId(long administrationUserId) { 
     this.administrationUserId = administrationUserId; 
    } 

    @Basic 
    @Column(name = "userName", nullable = true, insertable = true, updatable = true, length = 64) 
    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    @Basic 
    @Column(name = "name", nullable = true, insertable = true, updatable = true, length = 64) 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Basic 
    @Column(name = "createDate", nullable = true, insertable = true, updatable = true) 
    public Timestamp getCreateDate() { 
     return createDate; 
    } 

    public void setCreateDate(Timestamp createDate) { 
     this.createDate = createDate; 
    } 

    @Basic 
    @Column(name = "createBy", nullable = true, insertable = true, updatable = true, length = 15) 
    public String getCreateBy() { 
     return createBy; 
    } 

    public void setCreateBy(String createBy) { 
     this.createBy = createBy; 
    } 

    @Basic 
    @Column(name = "modDate", nullable = true, insertable = true, updatable = true) 
    public Timestamp getModDate() { 
     return modDate; 
    } 

    public void setModDate(Timestamp modDate) { 
     this.modDate = modDate; 
    } 

    @Basic 
    @Column(name = "modBy", nullable = true, insertable = true, updatable = true, length = 15) 
    public String getModBy() { 
     return modBy; 
    } 

    public void setModBy(String modBy) { 
     this.modBy = modBy; 
    } 
    } 

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> 

    <persistence-unit name="NewPersistenceUnit"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>edu.rit.its.coopEval.model.AdministrationUser</class> 
     <properties> 
      <property name="hibernate.connection.url" value=""/> 
      <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/> 
      <property name="hibernate.connection.username" value=""/> 
      <property name="hibernate.connection.password" value=""/> 
      <property name="hibernate.archive.autodetection" value="class"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.format_sql" value="true"/> 
      <property name="hbm2ddl.auto" value="update"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

, 사용자 이름 : 및 지속성 클래스는 다음과 같습니다 , 그리고 암호를 두꺼비에 데이터베이스에 연결하고 테이블을 만듭니다. 나는 그 문제가 뭔지 전혀 모른다.

+0

데이터베이스의 테이블을 "administration_user"라고도합니다. – GandalfIX

+0

예, "AdministrationUser" – mhickson

답변

0

당신은 추가 시도 할 수 :

<property name="javax.persistence.schema-generation.database.action" value="create"/> 

당신의 persitence 장치에. 그렇지 않으면 내 생각 엔 엔티티에 @Table(name = "<whatever its called>")을 추가해야 할 것입니다.

편집 : 내 부분에 좀 더 연구 한 후

, 그것은 최대 절전 모드에 대한처럼 보이는 대신이 필요할 수 있습니다

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

내가 일 개봉 같은 속성으로 설정 한 경우 몰라요 공장.

+0

불행히도 이러한 모든 제안을 시도했지만 결과가 없습니다. – mhickson

관련 문제