2012-09-25 3 views
2

Oracle 데이터베이스에서 두 테이블의 일부 데이터를 가져 오려고합니다. 주석을 사용하는 MyEntity 클래스를 정의합니다 (클래스 정의시 @Table을 사용하지 않고 @Entity 만 사용). 이 엔티티의 최대 절전 모드는 다음 코드와 같습니다.최대 절전 모드 기본 스키마를 선택하지 못했습니다.

public List<MyEntity> getAll() { 
    return oracleSessionFactory.getCurrentSession() 
      .createSQLQuery("SELECT a.column1, a.column2, b.column1" + 
        "FROM A_table a JOIN B_table b " + 
        "ON a.column1 = b.column1") 
      .addEntity(MyEntity.class).list(); 
} 

최대 절전 모드의 기본 스키마 속성을 설정했습니다. 지속성 파일의 데이터 소스에 default_property. 그러나 문제는이 같은 오류와 함께 작동하지 않습니다

java.sql.SQLException: ORA-00942: table or view does not exist

난 그냥 다음과 같은 SQL 쿼리로 내 하드 코드를 추가하면 프로그램이 잘 작동합니다.

"SELECT a.column1, a.column2, b.column1 FROM myschema.A_table a JOIN myschema.B_table b ON a.column1 = b.column1" ,

어떻게 기본 설정을 데리러 내 프로그램을 활성화 할 수 있습니다?

답변

0

당신의 엔티티에 주석을 추가

@Table(schema="myschema") 
+0

그것은 같은 오류와 함께 실패에 추가하려면이보십시오. –

0

이있는 hibernate.cfg.xml 파일

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

같은 오류가 발생하여 실패합니다. –

+0

Check는 데이터베이스의 테이블 이름과 동일한 @Entity로 주석을 추가 한 클래스 "MyEntity"의 이름입니다. – dusmanka

+0

'MyEntity' 클래스에는 두 개의 기존 테이블에서 필요한 선택 필드 만 포함됩니다. 해당 테이블이 존재하지 않습니다. 그러나,'List getAll()'메소드의 sql 쿼리에 스키마 이름을 추가하면 최대 절전 모드로 작동합니다. 그것은 유선 지점입니다. –