2016-10-27 4 views
0

기존 Mysql 데이터베이스에서 JPA/Hibernate를 사용하여 새로운 Play 애플리케이션을 만들려고합니다.이미 존재하는 데이터베이스로부터 Hibernate를 올바르게 구현하는 방법?

hibernate.hbm2ddl.auto의 지속성 파일은 "업데이트"로 설정됩니다.

내 테이블 게시물에 6 개의 항목이 있습니다. 문제가 "SELECT p FROM Posts p"과 같은 HQL 문을 실행할 때 빈 결과가 나타나고 "SELECT * FROM posts"과 같은 원시 쿼리를 실행하면 기존 항목이 생깁니다.

나는 여기에 거대한 무언가를 놓치고 있다고 생각한다. hibernate의 내부 캐싱 시스템이나 뭐 그런 것처럼,이 빈 결과를 설명 할 수있는 것이 무엇인가? Hibernate는 HQL 문으로 정확한 결과를 반환하도록 기존 데이터베이스에서 사용될 때 특정 캐시를 생성해야합니까? 왜 그런 일이 필요한거야?

+1

기존 데이터베이스의 경우 자동 DDL을 사용하지 마십시오. 기존 데이터베이스 스키마에 깔끔하게 매핑되는 엔티티를 작성해야합니다. 테이블 이름과 같은 것으로 불일치 할 수 있습니다 (예 : 일반적으로 클래스 이름은'Post' 여야합니다). – chrylis

+0

고마워, 너는 나에게 길을 보여줬다. 그것은 실제로 일부 필드의 매핑 문제 였고, 최대 절전 모드가 매핑 검사를 통과하지 못하면 앱을 실행할 수 있다는 것이 이상하다. – Aphax

답변

1

내 테이블 게시물에 6 개의 항목이 있습니다. 문제는 "SELECT p FROM Post p"와 같은 HQL 문을 실행할 때 "SELECT * FROM posts"와 같은 네이티브 쿼리를 실행하면 빈 결과가 나타납니다. 기존 항목이 있습니다.

이것은 mysql 테이블에서 jpa 엔티티로의 매핑을 정의해야하는 것처럼 들립니다. 최대 절전 모드 도구를 사용하여 자동으로 생성 할 수 있습니다 (예 : 이클립스 플러그인을 사용하여 수행하는 방법은 here 참조).

그런 다음 쿼리 결과를 얻어야한다. Hibernate는 그 과정에서 캐시를 채울 것이다.

관련 문제