【问题标题】:Select records without parent with Hibernate using Criteria API使用 Criteria API 使用 Hibernate 选择没有父级的记录
【发布时间】:2016-09-08 01:31:09
【问题描述】:

如何使用 Criteria API 在 Hibernate 中选择没有父级的记录?

这是我与父母一起选择的 Java 代码

getSessionFactory().getCurrentSession().createCriteria(Category.class).add(
Restrictions.eq("parent", new Category(parentId))).list();

类别 Java 代码

@Entity
@Table(name = "CATEGORY")
public class Category implements NamedModel{
    @Id
    @Column(name = "CATEGORY_ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    @OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
    @JoinTable(name = "CATEGORY_RELATIONS",
        joinColumns = {
                @JoinColumn(name = "CATEGORY_RELATIONS_CATEGORY_ID", referencedColumnName = "CATEGORY_ID")},
        inverseJoinColumns = {
                @JoinColumn(name = "CATEGORY_RELATIONS_PARENT_ID", referencedColumnName = "CATEGORY_ID")})
    private Category parent;
    @OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.EAGER, mappedBy = "parent")
    private List<Category> children;//...
}

CategoryRelations Java 代码

@Entity
@Table(name = "CATEGORY_RELATIONS")
@IdClass(CategoryRelations.CategoryRelationsPrimaryKey.class)
public class CategoryRelations implements Serializable {
    @Id
    @Column(name = "CATEGORY_RELATIONS_CATEGORY_ID")
    private long categoryId;
    @Id
    @Column(name = "CATEGORY_RELATIONS_PARENT_ID")
    private long parentId;

    @Entity
    @IdClass(CategoryRelationsPrimaryKey.class)
    public static class CategoryRelationsPrimaryKey implements Serializable    {
        private long categoryId;
        private long parentId;
    }
}

【问题讨论】:

    标签: java sql hibernate orm annotations


    【解决方案1】:

    您可以使用Restriction#isNull(propertyName) 函数来满足您的要求。

    Restrictions.isNull("parent")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 2016-05-09
      • 2011-04-23
      • 2013-05-10
      • 1970-01-01
      • 2011-08-25
      • 2013-07-24
      相关资源
      最近更新 更多