休眠查询未映射的联接表

干将军

我是一名尝试学习Hibernate的J2EE新手。我有两个表,System和Game,以及一个名为Systems_game的联接表。

我希望能够放入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();              
}

运行此命令时,我收到
“请求处理失败;嵌套的异常是org.hibernate.hql.ast.QuerySyntaxException:[未从[Systems_game S WHERE S.game_id = 1]映射Systems_game]”

我知道我的hibernate.cfg.xml文件中没有映射systems_game,但是我不知道如何映射它,因为我没有用于它的类。我是否需要以其他方式处理我的多对多关系,并为其授课?我忽略的任何其他方式都可以帮助我达到预期的效果吗?

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

Jaiwo99

有两种方法可以做到这一点:

  1. sql方式:

    sessionFactory.getCurrentSession()。createNativeQuery(“从* systems_game中选择*,其中s.game_id = 1”)...

  2. hibernate(java)方式:

    game = session.createQuery(来自id = 1的游戏).uniqueResult()列表系统= game.getSystems()

只需尝试伪代码!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章