INSERT INTO PERSON
(email, mobile, party_id, affiliate_id, eligibility, member_start_date, created_by, created_dt, first_name, last_name, google_connected)
values
('xxx@yyy.org', NULL, 123, '123', '1', NULL, NULL, '2018-8-30 21:45:56.859000 -6:0:0', 'xxx', 'yyy', '0')
ON CONFLICT (email)
DO UPDATE SET create_dt = '2018-8-30 21:45:56.859000 -6:0:0' where email = ?
当LocalDate值不为null时,它可以正常工作。只有当LocalDate值为null时才面临此问题。
即使在PostgreSQL转换之后,它也会执行相同的操作。
异常StackTrace:
@Entity(name = "person")
@EqualsAndHashCode(callSuper = false)
public class PersonEntity extends Audit {
@Id
@GeneratedValue
@Column(name = "person_id", columnDefinition = "uuid", updatable = false)
private UUID id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
@NotNull
private String email;
@Column(name = "mobile")
private String mobile;
@Column(name = "party_id")
private Long partyId;
@Column(name = "affiliate_id")
private String affiliateId;
@Column(name = "eligibility")
@NotNull
private Boolean eligibility;
@Column(name = "member_start_date")
private LocalDate memberStartDate;
@Column(name = "google_connected")
private Boolean googleAccountConnected;
}
PostgreSQL表定义;缺少不重要的google_connected
列:
CREATE TABLE person
(
person_id UUID NOT NULL,
email VARCHAR(128) NOT NULL,
mobile VARCHAR(20),
party_id INTEGER,
affiliate_id VARCHAR(20),
eligibility BOOLEAN NOT NULL,
member_start_date DATE,
created_by VARCHAR(128) NOT NULL,
created_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by VARCHAR(128) DEFAULT NULL,
updated_dt TIMESTAMP NULL,
CONSTRAINT person_pk PRIMARY KEY ( person_id )
);
因为查询是本机的,所以Hibernate不知道预期的数据类型,所以当您传递null时,它将默认地传递给通用的可序列化类型处理程序。更改此行为会破坏与其他数据库的兼容性。
但是,Postgres会立即解析查询并确定哪些类型是可接受的,并且它总是在检查NULL之前检查type。他们是唯一能够解决这个问题的人,但他们拒绝这样做,并说它是按预期工作的。
您唯一的解决方案是:
幸运的是,对于第三种选择,通过Hibernate,您可以在本机查询中使用命名参数,因此您不必进行位置计算来确定什么时候可用,什么时候不可用。
编辑:自那以后我发现的第四个解决方案。
您有您的查询:
Query q = em.createNativeQuery("UPDATE...");
在某个地方有一些静态的最终LocalDate对象:
public static final LocalDate EPOCH_DATE = LocalDate.of(1970, 1, 1);
q.setParameter("start_date", EPOCH_DATE);
q.setParameter("start_date", nullableDateParam);
问题内容: 在不同数据库之间进行切换时,关于包含大对象(BLOB)的hibernate映射,我有一个奇怪的问题。 上面的字段在MySQL和Oracle中创建一个字节数组字段,但是在PostreSQL中,它创建一个oid类型的字段。 现在,当我尝试访问该字段时,它在其他数据库中也能正常工作,但是在PostgreSQL中,它失败并显示以下错误 因此,我试图简单地删除“ @Lob”注释,这将解决Post
在我将PostgreSQL 13个数据库列标记更改为jsonb后,执行sql时抛出错误: 在使用mybatis时,我应该如何处理spring boot应用程序中的jsonb?
我有来自API的响应文本。当我试图创建一个新的游戏从这个响应我得到一个错误: 错误:未处理的异常:“列表”类型不是“列表”类型的子类型 我在尝试使用JSON文本时遇到如下错误: 错误: 未处理的异常:“列表”类型不是“列表”类型的子类型 它指向游戏类中的这一行: 有什么建议吗?
我正在尝试使用nifi将CSV记录插入Postgres数据库。 示例csv文件: 当nifi场景运行时,它会给出以下错误 错误列“timenow”的类型为timestamp,没有时区,但表达式的类型为character variating 如果我使用正常的 没有错误值插入到表中。我必须更改nifi配置才能将其添加到表中吗? 我换了Nifi CSVReader- 编辑:在第一条注释之后,Nifi生成
我是爪哇的新手。我不明白为什么会发生这些错误。尝试创建一个数组列表,以便它保存每个对象。我得到的错误是 表达式的类型必须是数组类型,但它解析为数组列表上的行“newbug1[i].setpecies();” 提前致谢
在Spring Boot的一个项目中,Java8使用hibernate-spatial和PostgresDB 9.4 应用程序属性 (我也尝试了PostgisPG9Dialect) 我的实体有一个属性 如果我用空值保存就可以了,但是如果我放一个值 我有: 在我的数据库中,我可以看到列定义为 我要疯了...为什么它不起作用? 更新(仍然不起作用,我正在收集新信息) 1)我认为问题可能是数据库的创建。