Java 使用ManyToMany进行Hibernate查询
我有两个表,Receita(id,title,author),Tag(id\u Tag, 标签)和自动创建的Receita_标签(idReceita,idTag) 在Receita类中: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
@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");
}