gpt4 book ai didi

sql - 无法将 NULL 值插入数据库

转载 作者:行者123 更新时间:2023-11-29 12:22:06 25 4
gpt4 key购买 nike

我们使用 JPA 将我们的实体加载/保存在 prostges 数据库中。在一种情况下,我必须坚持一个具有 native 查询的实体。这是代码:

String sql = "INSERT INTO recording (id,creationdate,duration,endtime,filemaninfocomplete,lastupdated,packagesdeletetime,rcinfocomplete,"
+ "rcrecordingkept,recordstate,recordingtype,starttime,tenantid,recordingnode_id,transcription_id) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Query query = getEntityManager().createNativeQuery(sql);
query.setParameter(1, recording.getId());
query.setParameter(2, new Date(), TemporalType.TIMESTAMP);
query.setParameter(3, recording.getDuration());
query.setParameter(4, recording.getEndtime(), TemporalType.TIMESTAMP);
query.setParameter(5, recording.isFileManInfoComplete());
query.setParameter(6, new Date(), TemporalType.TIMESTAMP);
query.setParameter(7, recording.getPackagesDeleteTime(), TemporalType.TIMESTAMP);
query.setParameter(8, recording.isRcInfoComplete());
query.setParameter(9, recording.isRcRecordingKept());
query.setParameter(10,recording.getRecordState() != null ? recording.getRecordState().toString() : RecordState.DEFAULT);
query.setParameter(11,recording.getRecordingType()!= null ? recording.getRecordingType().toString() : null);
query.setParameter(12,recording.getStarttime(), TemporalType.TIMESTAMP);
query.setParameter(13,recording.getTenantId());
query.setParameter(14,recording.getRecordingNode() != null ? recording.getRecordingNode().getId() : null);
query.setParameter(15, recording.getTranscription() != null ? recording.getTranscription().getId() : null);
query.executeUpdate();

插入有效,除非“getPackagesDeleteTime”返回 null。在这种情况下,会显示以下消息:

Caused by: org.postgresql.util.PSQLException: FEHLER: Spalte »packagesdeletetime« hat Typ timestamp without time zone, aber der Ausdruck hat Typ character varying
Hinweis: Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen.
Position: 252

(即:

ERROR: column "packagesdeletetime" has type timestamp without time zone, but the expression is of type character varying
Hint: You must rewrite the expression or typecast.

)

生成的语句如下:

INSERT INTO recording(id,creationdate,duration,endtime,filemaninfocomplete,lastupdated,packagesdeletetime,rcinfocomplete,rcrecordingkept,recordstate,recordingtype,starttime,tenantid,recordingnode_id,transcription_id) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
bind => [0c850391-cae9-4ac2-9381-b252167fa239, 2013-04-18 08:38:00.704, 20240, 2013-04-18 08:37:24.131, false, 2013-04-18 08:38:00.704, null, false, true, DEFAULT, VOICE, 2013-04-18 08:37:03.891, f56251a7-44df-4151-aa0d-7c3fc538f621, null, null]

我如何解决问题的一些提示?

最佳答案

实体中的相应字段必须注释为:

@Column(nullable=true)

同时检查表中的相应列是否允许 NULL(没有 NOT NULL 约束)。如果这没有帮助,请发布您的实体的代码。

关于sql - 无法将 NULL 值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074840/

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