JPA 查询生成器
请帮助创建一个查询! 我必须通过公共父对象按categoryId 选择所有标签。
我有下一个:
@Table(name="ADVERT")
@Entity(name="Advert")
public class JpaAdvert implements Advert{
@Id
@GeneratedValue
private long id;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="category_id", referencedColumnName="id")
private JpaCategory category = new JpaCategory();
@ManyToMany(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name="ADVERT_TAGS", joinColumns=@JoinColumn(name="advert_id",referencedColumnName="id"), inverseJoinColumns=@JoinColumn(name="tag_id", referencedColumnName="id"))
private Set<JpaTag> tags = new HashSet<JpaTag>();
...
标签对象:
@Entity(name="Tag")
@Table(name="TAG")
public class JpaTag implements Tag {
@Id
@GeneratedValue
private long id;
private String name;
private long weight=1;
private String locale;
....
和类别对象:
@Table(name="CATEGORY")
@Entity(name="Category")
public class JpaCategory implements Category {
@Id
@GeneratedValue
private long id;
@Column(name="category_name")
private String categoryName;
.....
所以我需要按类别 ID 选择属于特定类别的所有标签。对于我来说,如何做到这一点有点复杂!
请任何人帮忙!
Please help to create a query!
I have to select all Tags by categoryId via common parent object.
I have next:
@Table(name="ADVERT")
@Entity(name="Advert")
public class JpaAdvert implements Advert{
@Id
@GeneratedValue
private long id;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="category_id", referencedColumnName="id")
private JpaCategory category = new JpaCategory();
@ManyToMany(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name="ADVERT_TAGS", joinColumns=@JoinColumn(name="advert_id",referencedColumnName="id"), inverseJoinColumns=@JoinColumn(name="tag_id", referencedColumnName="id"))
private Set<JpaTag> tags = new HashSet<JpaTag>();
...
The tag object:
@Entity(name="Tag")
@Table(name="TAG")
public class JpaTag implements Tag {
@Id
@GeneratedValue
private long id;
private String name;
private long weight=1;
private String locale;
....
and the Category object:
@Table(name="CATEGORY")
@Entity(name="Category")
public class JpaCategory implements Category {
@Id
@GeneratedValue
private long id;
@Column(name="category_name")
private String categoryName;
.....
So I need to select ALL tags which belong to specific category by category ID. It's a bit complicated for me how to do it!
Help please anybody!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不需要为此使用标准。 Criteria 应该用于根据可变搜索条件动态组成查询。
以下是您可以使用的 JPQL:
如果您有双向关联,可能会感觉更自然。然后你可以使用
或
You don't need to use criteria for this. Criteria should be used to dynamically compose a query based on variable search criteria.
Here's the JPQL you could use:
It would probably feel more natural if you had bidirectional associations. You could then use
or