休眠查询未映射连接表

问题描述:

我是一个尝试学习Hibernate的J2EE新手。我有两个表,System和Game,以及一个名为Systems_game的连接表。休眠查询未映射连接表

我希望能够放入一个game_id并获得该游戏的所有系统。

我在System.java和Game.java上使用Annotations来创建多对多关系。

@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();    
} 

当该运行时,我得到
“请求处理失败;嵌套的异常是org.hibernate.hql.ast.QuerySyntaxException:Systems_game未映射[从Systems_game S其中S.game_id = 1]”

我知道我的hibernate.cfg.xml文件中没有映射systems_game,但我不知道如何映射它,因为我没有它的类。我是否需要以不同的方式完成我的多对多关系,并且给它自己的课程?任何其他方式,我忽略这将帮助我达到预期的效果?

如果您需要更多代码,我会发布。

2的方式来做到这一点:

  1. SQL方式:

    sessionFactory.getCurrentSession()createNativeQuery( “SELECT * FROM systems_game s其中s.game_id = 1”)...

  2. 休眠(JAVA)的方法:

    游戏= session.createQuery(从游戏其中id = 1).uniqueResult() 列表系统= game.getSystems( )

只是尝试的伪代码!

HQL是关于对象,你不应该坚持你的数据库架构。

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

这就是你需要的。