我正在做一个项目,我需要定期用行填充一个四列表。数据库是postgresql。这些列是 string1、date1、string2、date2。我已经用 SQLAlchemy 在 python 中测试了这个项目,我在初始插入时填充了 string1 和 date1,后来填充了 string2 和 date2。由于项目逻辑,string2 和 date2 在插入时不可用,并且可能会在初始插入后数周更新。使用 SQLAlchemy,我可以简单地执行如下插入操作:
row = Row(
string1 = "SomeString",
date1 = datetime.now()
)
我也可以这样做:
row = Row(
string1 = "SomeString",
date1 = datetime.now(),
string2 = None,
date2 = None
)
现在,我需要在 Java Spring 中创建项目(我没有太多经验),并且 CrudRepository.save() 方法不允许我以上述任何一种方式进行。它坚持必须为每一列设置某种值(对应于正确的数据类型,截至目前我使用 LocalDate 作为日期,但任何 Date 数据类型都可以)。我现在的解决方法是设置 string2 = "" 和 date2 = LocalDate.parse("0001-01-01"),但这是一个低于标准的解决方案。我想发送一个 Null/None 值,以便 postgres 将其插入为 .
目前实体:
@Entity
@DynamicUpdate
@Table(name = "subsets", schema = "public")
class Subsets(
@Id
val id: String,
val author_created: String,
val date_created: LocalDate,
val author_committed: String,
val date_committed: LocalDate,
) {
private constructor() : this("", "", LocalDate.now(), "", LocalDate.now())
}
发帖逻辑:
@PostMapping("/createsubset")
fun createSubset(
@RequestParam id: String,
@RequestParam author_created: String,
){
subsetsRepository.save(
Subsets(
id = id,
author_created = author_created,
date_created = LocalDate.now(),
author_committed = "",
date_committed = LocalDate.parse("0001-01-01")
)
)
}