RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-523429

Olha's questions

Martin Hope
Olha
Asked: 2023-03-04 06:09:02 +0000 UTC

在 PostgreSQL 中编写对象时,序列生成器无法运行:“关系 [] 的列 [] 中的空值违反了非空约束”

  • 8

大家好!请帮忙。我看了很多有相同错误的线程,但没有找到解决方案。

写入对象时,PostgreSQL序列生成器不起作用。
给出错误信息:

错误:关系“receiving_acts”的“doc_number”列中的空值违反了非空约束

更详细地:

"org.springframework.dao.DataIntegrityViolationException: could not
execute statement; SQL [n/a]; constraint [doc_number\" of relation
\"receiving_acts].
org.hibernate.exception.ConstraintViolationException: could not
execute statement. org.postgresql.util.PSQLException: ERROR: null
value in column \"doc_number\" of relation \"receiving_acts\" violates
not-null constraint\n  Подробности: Failing row contains
(feba8451-de26-47c2-9fe2-5381318d8deb, null, 2023-03-01 14:42:03+02,
f, 47a9bb21-fa67-4ff7-bf33-e276d23a19eb)."

有一类Entity:

@Entity
@Table(name = "receiving_acts")
@Getter
@Setter
public class ReceivingAct extends AbstractDocumentEntity {

    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ra_dn_gen")
    @SequenceGenerator(name = "ra_dn_gen", sequenceName = "receiving_acts_doc_number_seq", allocationSize = 1)
    @Column(name = "doc_number")
    private Integer docNumber;

    @ManyToOne
    @JoinColumn(name = "contractor_id", nullable = false)
    private Contractor contractor;

    @OneToMany(mappedBy = "receivingAct", cascade = CascadeType.ALL)
    private List<ReceivingActTSVehiclesLine> tableVehicles;
}

@Id类型字段UUID在类中AbstractDocumentEntity并且没有问题,生成器可以工作。
DDL表创建:

CREATE SEQUENCE IF NOT EXISTS receiving_acts_doc_number_seq AS INTEGER INCREMENT BY 1;

CREATE TABLE receiving_acts
(
    id            UUID                     NOT NULL DEFAULT gen_random_uuid(),
    doc_number    INTEGER                  NOT NULL DEFAULT nextval('receiving_acts_doc_number_seq'),
    date_time     TIMESTAMP WITH TIME ZONE NOT NULL,
    marked        BOOLEAN                  NOT NULL,
    contractor_id UUID                     NOT NULL,
    CONSTRAINT pk_receiving_acts PRIMARY KEY (id),
    FOREIGN KEY (contractor_id) REFERENCES contractors (id)
);

控制器类中的方法:

@PostMapping("/")
@ResponseStatus(HttpStatus.CREATED)
public ReceivingActResponse createReceivingAct(@RequestBody ReceivingActRequest docRequest) {
    ReceivingAct docEntity = receivingActMapper.toReceivingActEntity(docRequest);
    ReceivingAct savedDocEntity = receivingActService.add(docEntity);
    return receivingActMapper.toReceivingActResponse(savedDocEntity);
}

add课堂上的方法ReceivingActServiceImpl:

@Override
public ReceivingAct add(ReceivingAct receivingAct) {
    return receivingActRepository.save(receivingAct);
}

该方法save是存储库中的标准方法ReceivingActRepository:

public interface ReceivingActRepository extends JpaRepository<ReceivingAct, UUID> {
}

JSON发帖要求:

{
    "docDateTime": "2023-03-03 11:53:56",
    "contractorId": "47a9bb21-fa67-4ff7-bf33-e276d23a19eb",
    "tableVehicles": [
        {
            "grossWeight": 1564.910,
            "vinCodeId": "d7094b75-fefc-4745-a4b6-4c5d4a2f97c3",
            "cellId": "bba1f527-a815-41ac-bbf9-aa5433d2d888"
        }
    ]
}

结果,在创建对象时,docNumber它被初始化null,以及id. 但id它返回生成,但docNumber不是。

类型改为Integer,int生成不发生,初始化0,写入0。

数据库中的序列被创建,它被锚定到一个字段。如果您手动添加一行,则会docNumber生成它。

试图@Column添加columnDefinition = "integer default nextval('receiving_acts_doc_number_seq'),没有帮助。

我不知道在哪里看,在哪里挖掘。也许您需要在保存之前以某种方式自己生成它,但这是不合逻辑的。也许当有另一个序列时,需要一种不同的方法。

java
  • 1 个回答
  • 59 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5