Java 休眠条件枚举

Java 休眠条件枚举,java,hibernate,enums,criteria,Java,Hibernate,Enums,Criteria,如果实体中有如下枚举: @Entity public class AA{ @Embedded public BB b; ... } @Embeddable public class BB{ @Enumerated(EnumType.STRING) @Column(columnDefinition = "varchar(50)") private CC c; ... } public enum CC{ D("DDD","123"),

如果实体中有如下枚举:

@Entity
public class AA{
    @Embedded
    public BB b;
...
}

@Embeddable
public class BB{
    @Enumerated(EnumType.STRING)
    @Column(columnDefinition = "varchar(50)")
    private CC c;
    ...
}

public enum CC{
    D("DDD","123"),
    E("EEE","456");
}
Criteria crit = sessionFactory.getCurrentSession().createCriteria(AA.class);
List<AA> list = crit.add(Restrictions.eq("b.c", CC.D)).list();
然后使用hibernate条件查询,如下所示:

@Entity
public class AA{
    @Embedded
    public BB b;
...
}

@Embeddable
public class BB{
    @Enumerated(EnumType.STRING)
    @Column(columnDefinition = "varchar(50)")
    private CC c;
    ...
}

public enum CC{
    D("DDD","123"),
    E("EEE","456");
}
Criteria crit = sessionFactory.getCurrentSession().createCriteria(AA.class);
List<AA> list = crit.add(Restrictions.eq("b.c", CC.D)).list();
Criteria crit=sessionFactory.getCurrentSession().createCriteria(AA.class);
List List=crit.add(Restrictions.eq(“b.c”,CC.D)).List();

您需要为嵌入对象创建别名,然后通过别名访问其属性

你喜欢这样吗

Criteria crit = sessionFactory.getCurrentSession().createCriteria(AA.class,"a");
crit.createAlias("a.b", "b");
List<AA> list = crit.add(Restrictions.eq("b.c", CC.D)).list();
Criteria crit=sessionFactory.getCurrentSession().createCriteria(AA.class,“a”);
标准createAlias(“a.b”、“b”);
List List=crit.add(Restrictions.eq(“b.c”,CC.D)).List();

我没有创建alias,但它运行正常,您能告诉我为什么吗?您想知道的问题在您的问题中并不清楚?我现在没有问题,只是想向可能遇到此问题的其他人展示您的问题是什么?您有我问题的答案吗