我是一名尝试学习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,但是我不知道如何映射它,因为我没有用于它的类。我是否需要以其他方式处理我的多对多关系,并为其授课?我忽略的任何其他方式都可以帮助我达到预期的效果吗?
如果您需要更多代码,那么我会发布。
有两种方法可以做到这一点:
sql方式:
sessionFactory.getCurrentSession()。createNativeQuery(“从* systems_game中选择*,其中s.game_id = 1”)...
hibernate(java)方式:
game = session.createQuery(来自id = 1的游戏).uniqueResult()列表系统= game.getSystems()
只需尝试伪代码!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句