我是一名 J2EE 新手,正在尝试学习 Hibernate。我有两个表: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 未映射 [来自 Systems_game S WHERE S.game_id=1]”
我知道我的 hibernate.cfg.xml 文件中没有映射 systems_game,但我不知道如何映射它,因为我没有它的类。我是否需要以不同的方式建立多对多关系并为其提供自己的类?我忽略的任何其他方法可以帮助我实现预期的结果吗?
如果您需要更多代码,我会发布。
最佳答案
有两种方法可以做到这一点:
sql方式:
sessionFactory.getCurrentSession().createNativeQuery("从systems_game s中选择*,其中s.game_id=1")...
hibernate(java)方式:
game = session.createQuery(来自 id = 1 的游戏).uniqueResult() 列出系统 = game.getSystems()
试试伪代码吧!
关于java - Hibernate 查询未映射的连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27325728/