2013-06-29 2 views
5

나는 Hibernate와 MySql 서버를 사용하고있다. 여러 데이터베이스를 "네임 스페이스"로 사용합니다 (예 : users, transactions, logging 등).Hibernate가이 SQL 쿼리를 생성하는 이유는 무엇입니까?

그래서, 특정 데이터베이스에 연결하지 하이버 네이트를 configued :

url = jdbc:mysql://127.0.0.1/

테이블이 catalog 속성을 통해 HBM 파일에 정의되어있는 데이터베이스 :

<class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ... 

을 어떤 데이터를로드하고자 할 때, 모든 것이 잘 작동하고 Hibernate는 (테이블 이름에 카탈로그 접두어를 사용하여) 예상 된 SQL 쿼리를 생성하는 것처럼 보입니다. : 나는 새 레코드를 추가 할 때

그러나
select id from users.user 

, Hibernate는 더 이상 from [catalog].[table_name] 구문을 사용하지 마십시오. 그래서 MySQL 오류 '데이터베이스가 선택되지 않았습니다.'가 표시됩니다.

select max(id) from user 

Hibernate가 새 레코드를 만들 수있는 미래의 ID를 얻을 시도하고 있지만 데이터베이스 테이블을 위치하는 지정하지 않습니다, 그것은해야한다 :

select max(id) from users.user 

왜 최대 절전 모드 발생입니다 이 잘못된 쿼리? 누군가이 문제를 경험 한 적이 있습니까?

+0

사용중인 최대 절전 모드 버전은 무엇입니까? –

+0

Hibernate-4.2.2 –

+0

을 사용하고있다 : schema = "users"catalog = "users"? – Rafa

답변

1

생성자의 스키마를 지정해야합니다. 보다 자세한 답변은 this question on SO을 참조하십시오.

관련 문제