繁体   English   中英

休眠查询未映射的联接表

[英]Hibernate Query for unmapped join table

我是一个新手J2EE努力学习Hibernate的。 我有两个表,系统和游戏,以及连接表称为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。

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

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

2种方法:

  1. sql方式:

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

  2. hibernate(java)方式:

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

只需尝试伪代码!

HQL与对象有关,您不应该坚持使用数据库架构。

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

这就是你所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM