标准:如何让没有父母的孩子

我在Netbeans上使用Criteria和Hibernate有点问题。

可以为我提供服务的解决方案有几种:在Netbeans中使用元模型(这是我所有问题的解决方案,但是控制台通常会吐出一个错误,指出找不到源),或者执行此操作所需的代码。查询。

情况如下: 我有一个称为Grado的父实体,一个名为Materia的子实体。这种关系是一对多的。一个Grado可以具有多种材料:英语,数学,物理,伦理学...

我需要进行一次或多次查询才能获得材料列表,而无需分配父级。我尝试获取的SQL中的等效项是:SELECT * FROM Materia where id not in (select id from Materia m join grado_materia g on m.id = g.materias_id);

Grado 父实体:

@Entity
public class Grado implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Basic
    private String nombre;

    @OneToMany(orphanRemoval = true)
    private List<Materia> materias;

    //getters and setters
}

材料子实体

@Entity
public class Materia implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Basic(optional = false)
    private String nombre;

    //getters and setters
}

Hibernate产生以下关系 grado -> grado_materia <- materia

修改 为了完成@Spiderman提供的solution解决我遇到的问题,我将查询内容提供给将来的读者

CriteriaBuilder cb = sesion.getcriteriaBuilder();
CriteriaQuery<Materia> cq = cb.createQuery(Materia.class);
Root<Materia> root = cq.from(Materia.class);
cq.select(root);
cq.where(root.get("grado").isnull());
Query query = sesion.createQuery(cq);
List<Materia> results = query.getResultList();
leigang_ 回答:标准:如何让没有父母的孩子

尝试以下操作:

要为Grado模型添加

@OneToMany(orphanRemoval = true)
@JoinColumn(name="grado_id")
private List<Materia> materias;

并向本模型添加

@ManyToOne
private Grado grado ;

将以上内容添加到Materia模型中将阻止创建联接表。

本文链接:https://www.f2er.com/2921838.html

大家都在问