gpt4 book ai didi

java - 标准:如何让没有 parent 的 child

转载 作者:行者123 更新时间:2023-12-01 19:23:12 24 4
gpt4 key购买 nike

我在 Netbeans 上使用 Criteria 和 Hibernate 时遇到了一些问题。

可以为我服务的解决方案有几个:使用Netbeans中的元模型(它是我所有问题的解决方案,但控制台经常吐出一个错误,说它没有找到源),或者执行以下操作所需的代码查询。

情况如下:我有一个名为 Grado 的父实体和一个名为 Materia 的子实体。该关系是一对多。 Grado 可以有多种 Material :英语、数学、物理、伦理...

我需要执行一个或多个查询来获取 Material 列表而不分配父级。我试图获得的 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
}

Material 子实体

@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

编辑完成solution由@Spiderman提供给我遇到的问题,我为 future 的读者提出了查询

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();

最佳答案

尝试以下操作:

向 Grado 模型添加

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

并添加到 Material 模型

@ManyToOne
private Grado grado ;

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

关于java - 标准:如何让没有 parent 的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59336171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com