spring data postgresql在null时保存默认值

时间:2016-10-25 16:29:06

标签: java postgresql spring-data

我有一个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读取。如何实现?

0 个答案:

没有答案