Java 使用ManyToMany进行Hibernate查询

Java 使用ManyToMany进行Hibernate查询,java,spring,hibernate,jsp,many-to-many,Java,Spring,Hibernate,Jsp,Many To Many,我有两个表,Receita(id,title,author),Tag(id\u Tag​​, 标签)和自动创建的Receita_标签(idReceita,idTag) 在Receita类中: @ManyToMany(fetch=FetchType.LAZY) @JoinTable(name="receita_tag", joinColumns={@JoinColumn(name="idReceita")}, inverseJoinC

我有两个表,Receita(id,title,author),Tag(id\u Tag​​, 标签)和自动创建的Receita_标签(idReceita,idTag)

在Receita类中:

@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="receita_tag", joinColumns={@JoinColumn(name="idReceita")}, 
                               inverseJoinColumns={@JoinColumn(name="idTag")})
@Cascade(org.hibernate.annotations.CascadeType.ALL) 
private Collection<Tag> tag = new ArrayList<Tag>();

感谢您的大力帮助。

您想用
实现什么?其中r.id=“+id+”=:id”
?我想您需要查看HQL。这个“id”指的是收入的id。我想通过“id”返回两个表中的所有数据。假设
id=4
,则查询字符串将从Receita r join r.tag t变为
,其中r.id=4=:id
。这不是有效的HQL(也不是有效的SQL)。我认为您需要查看
HQL
Query
api。如果“id=4”,则意味着它将返回两个表中收入id为4的所有数据。对吧?会的。但是看看你的查询,它是不正确的,它没有达到你的预期。
@ManyToMany(fetch=FetchType.LAZY, mappedBy = "tag")
@JoinTable(name="receita_tag", joinColumns={@JoinColumn(name="idTag")}, 
                               inverseJoinColumns={@JoinColumn(name="idReceita")})
@Cascade(org.hibernate.annotations.CascadeType.ALL) 
private Collection<Receita> receita = new ArrayList<Receita>();  
 public Receita getReceita(int id) {

    return (Receita) session.getCurrentSession().createQuery("from Receita r join r.tag t where r.id="+id+"=:id");
}