java怎么找父母结点_java-返回没有父母的实体?

我有一个在图形中使用的以下类,因此可以有父母和孩子:

@Entity(name = "PedagogicalNeed")

@Table(name = "PedagogicalNeed")

public class PedagogicalNeedEntity extends AbstractEntity implements PedagogicalNeed {

private String name;

private String description;

@ManyToMany(targetEntity = PedagogicalNeedEntity.class, fetch = FetchType.LAZY)

private Set parents = new HashSet(0);

@ManyToMany(targetEntity = PedagogicalNeedEntity.class, fetch = FetchType.LAZY)

private Set children = new HashSet(0);

...

}

超类AbstractEntity用于定义@Id字段:

@MappedSuperclass

public abstract class AbstractEntity implements Serializable {

...

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

...

}

我有以下请求,该请求应返回“父母”集合为空的实体.

@Query("SELECT pn FROM PedagogicalNeed pn WHERE pn.parents IS EMPTY")

Iterable findRoots();

我的问题是,执行此请求时,出现以下“ NOT NULL约束违反”:

Caused by: org.hsqldb.HsqlException: integrity constraint violation: NOT NULL check constraint; SYS_CT_10102 table: PEDAGOGICALNEED_PEDAGOGICALNEED column: PARENTS_ID

问题:如何退还没有父母的实体?

UPDATE:生成的架构如下:

CREATE MEMORY TABLE PUBLIC.PEDAGOGICALNEED(ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,DESCRIPTION VARCHAR(255),NAME VARCHAR(255))

ALTER TABLE PUBLIC.PEDAGOGICALNEED ALTER COLUMN ID RESTART WITH 1

CREATE MEMORY TABLE PUBLIC.PEDAGOGICALNEED_PEDAGOGICALNEED(

PEDAGOGICALNEED_ID BIGINT NOT NULL,

PARENTS_ID BIGINT NOT NULL,

CHILDREN_ID BIGINT NOT NULL,

PRIMARY KEY(PEDAGOGICALNEED_ID,CHILDREN_ID),

CONSTRAINT FK_GSX50JH17YMGUMDQ7ADD0Y0Y5 FOREIGN KEY(PARENTS_ID) REFERENCES PUBLIC.PEDAGOGICALNEED(ID),

CONSTRAINT FK_L6QY3L7AMTRVX1O62WVS6C9X8 FOREIGN KEY(PEDAGOGICALNEED_ID) REFERENCES PUBLIC.PEDAGOGICALNEED(ID),

CONSTRAINT FK_EHV0QET4GVHBX733YJV6Q9KQD FOREIGN KEY(CHILDREN_ID) REFERENCES PUBLIC.PEDAGOGICALNEED(ID))

我不了解此映射,为什么有一个包含三个字段的表“ PEDAGOGICALNEED_PEDAGOGICALNEED”? PedagogicalNeedEntity与它的父母之间的联系与同一个实体与它的孩子之间的联系无关.因此,应该有两个表,而不仅仅是一个表,每个表只有两列:

>第一个表应具有(PEDAGOGICALNEED_ID,CHILDREN_ID)作为键

>第二个表应具有(PEDAGOGICALNEED_ID,PARENTS_ID)作为键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值