gpt4 book ai didi

java - JAVA(DAO)和SQL中的聚合关系

转载 作者:行者123 更新时间:2023-12-01 10:08:56 25 4
gpt4 key购买 nike

我尝试编写我的第一个 DAO 程序。在我的数据库中,我创建了两个表:PROJECT 和 MILESTONE。通常情况下,项目和里程碑之间有一种聚合关系:一个项目可以有多个里程碑,但一个里程碑不可避免地只会影响一个项目。

我有两个主要问题:

1) 在 SQL 表中,这是否意味着我必须在 projectid 上添加约束(外键)并将该外键与里程碑表相关联?到目前为止,我选择在里程碑表中有一列名为“projectid”的列。在我看来,如果我们这样做就很简单。

2)当我创建一个里程碑对象时,必须指定projectid,所以我尝试编写这个构造函数:

 public Milestone (String name, String description, String projectId) throws SQLException, ClassNotFoundException {
this.name = name;
this.description = description;

ProjectDAOImpl proj = new ProjectDAOImpl();
// "proj.findById(projectId)" is to verify if a real project exist having the specified id
if ( (proj.findById(projectId))!= null ) {
this.projectId = projectId;
}
else {
return null; //is it correct to do that in a constructor??
}
}

这里的问题是我不知道如何用 Java 翻译这个条件:“如果存在具有此指定 ID 的现有项目,则里程碑将受到该项目的影响。如果没有,则不会创建里程碑对象”。我的意思是,如果没有相应的项目,我如何告诉构造函数不要创建对象?

最佳答案

  • 构造函数不能返回值。您可以抛出异常(例如 IllegalArgumentException)而不是返回 null 值。
  • 关于java - JAVA(DAO)和SQL中的聚合关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36281656/

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