简体   繁体   English

限制儿童的休眠标准

[英]Hibernate Criteria with restriction on children

I got a simple class 我上了简单的课

@Entity(name = "tag")
public class Tag
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    protected long id;

    @Column(name = "tag", nullable = false)
    private String tag;

    public Tag()
    {
    }

    public long getId()
    {
        return id;
    }

    public void setId(long id)
    {
        this.id = id;
    }

    public String getTag()
    {
        return tag;
    }

    public void setTag(String tag)
    {
        this.tag = tag;
    }
}

And it resides as list in another class and is obtained using 它作为列表驻留在另一个类中,并使用

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "entry_tag_list", joinColumns = {
        @JoinColumn(referencedColumnName = "id", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(referencedColumnName = "id", nullable = false)})
@Fetch(FetchMode.SELECT)
private List<Tag> tags;

So when I create a Criteria using 所以当我使用创建条件时

cr.add(Restrictions.eq("tags.tag", tag));

I get 我懂了

Caused by: org.hibernate.QueryException: could not resolve property: tags.tag

I made sure that my getters and setters are getTags and setTags, so I am not sure what I am missing. 我确保我的getter和setter是getTags和setTags,所以我不确定自己缺少什么。

As a sidenote, I have to use @Fetch(FetchMode.SELECT) since a lot of queries depend on it. @Fetch(FetchMode.SELECT) ,我必须使用@Fetch(FetchMode.SELECT)因为很多查询都依赖它。

Try like this 这样尝试

cr.createAlias("tags", "tagsAlias");
cr.add(Restrictions.eq("tagsAlias.tag", tag);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM