我有一个postgred db和table,其中包含以下列:
TIMESTAMP BIGINT DEFAULT (date_part('epoch'::text, now()) * (1000)::DOUBLE PRECISION) NOT NULL,
我希望在Java中存储像System.currentTimeMillis那样的毫秒计数。 我希望postgres在每次插入时为我做这件事。但我无法像在mysql中那样存储具有空时间戳的记录。我希望它能触发def。列为null时的值。我有一个带有列的弹簧数据jpa类:
@Column(nullable = false,
columnDefinition = "BIGINT DEFAULT (date_part('epoch'::text, now()) * (1000)::DOUBLE PRECISION) NOT NULL")
public BigDecimal getTimestamp() {
return timestamp;
}
但不是这个,也不是
@Column(insertable=false,...)
的工作原理。此外,我还有一个存储库,此列也涉及
@Query( "select c from ChatMessages c where"
+ " c.messageType in (:messageTypes) "
+ "and c.clientType=:clientType "
+ "and c.nextMessageId is null "
+ " and c.processed=0 "
+ "and c.timestamp+:delta<=:currentTimestamp" )
List<ChatMessages> findEligibleRecords(
@Param("currentTimestamp") Long currentTimestamp,
@Param("delta") Long delta,
@Param("clientType") ClientTypeEnum clientType,
@Param("messageTypes") MessageTypes... messageType);
我无法让它发挥作用。我希望这个值只能由postgres存储,但是由jpa读取。如何实现?