2014-12-05 2 views
0

나는 Hibernate를 배우려고하는 J2EE 초보자이다. System and Game이라는 두 개의 테이블과 Systems_game이라는 조인 테이블이 있습니다.Hibernate 매핑되지 않은 조인 테이블에 대한 쿼리

나는 game_id를 넣고 해당 게임의 모든 시스템을 가져오고 싶습니다.

나는 System.java와 Game.java에서 어노테이션을 사용하여 다 대다 관계를 만듭니다.

@ManyToMany(targetEntity = System.class, cascade = { CascadeType.ALL }) 
@JoinTable(name="Systems_game", 
      joinColumns = { @JoinColumn(name="game_id") }, 
      inverseJoinColumns = { @JoinColumn(name="system_id") }) 
private List<Game> games; 

그리고 내가 원하는 결과를 얻으려는 방법입니다.

@Override 
public List getGameSystem(){ 
    return sessionFactory.getCurrentSession().createQuery("from Systems_game S WHERE S.game_id=1").list();    
} 

이 실행될 때, I 얻을
"요청 처리 실패; 중첩 예외 org.hibernate.hql.ast.QuerySyntaxException이다 Systems_game는 [WHERE S.game_id = 1 Systems_game S]와 매핑되지 않은"

나는 hibernate.cfg.xml 파일에 매핑 된 systems_game을 가지고 있지 않다는 것을 알고있다. 그러나 나는이 클래스를 가지고 있지 않기 때문에 맵핑하는 방법을 모른다. 다 - 대 - 다 관계를 다른 방식으로 수행하고 자신의 클래스를 제공해야합니까? 내가 바라 보는 다른 방법으로 원하는 결과를 얻을 수 있습니까?

더 많은 코드가 필요하면 게시 할 것입니다. 이 작업을 수행하는

답변

1

2 가지 방법 :

  1. SQL 방법 :.

    sessionFactory.getCurrentSession() createNativeQuery ("systems_game s에 SELECT * FROM 곳 s.game_id = 1") ...

  2. 최대 절전 모드 (자바) 방법 :

    게임 = session.createQuery (게임의 경우 ID = 1) .uniqueResult() 목록 시스템 =의 game.getSystems ()

0

HQL 객체에 관한 것입니다! 의사 코드를 시도하고 당신은 당신의 데이터베이스 스키마에 충실하지 않아야합니다.

from SYSTEM as s join s.games as g where g.id=:id 

이것은 필요한 것입니다.

관련 문제