postgresql 使用React式postgres r2dbc时,DB字段未正确Map到java对象

kpbwa7wx  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(129)

我有一个带有React式堆栈(WebFlux)的Sping Boot 应用程序。我使用r2dbc驱动程序处理PostgreSQL数据库。DB包含2条记录,所有值都存在,但当我查询时,我得到空字段。下面你可以看到服务回复。

[
    {
        "pkey": null,
        "description": null,
        "uid": null,
        "isActive": null
    },
    {
        "pkey": null,
        "description": null,
        "uid": null,
        "isActive": null
    }
]

实体类:

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Immutable;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;

@Getter
@Setter
@Builder
@ToString
@Immutable
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "channel", schema = "myschema")
public class ChannelView {
    @Id
    @Column("pkey")
    private Integer pkey;

    @Column("description")
    private String description;

    @Column("uid")
    private String uid;

    @Column("is_active")
    private Boolean isActive;
}

使用默认生成的findAll()方法通过React式repo接收的数据:

import com.myproject.dao.entity.ChannelView;
import org.springframework.data.r2dbc.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Mono;

@Repository
public interface ChannelViewRepository extends ReactiveCrudRepository<ChannelView, Integer> {
}

注意通道实际上是一个视图,而不是一个表。可能是问题所在。但在非React式方法中,它工作正常(jdbc驱动程序)。

zzlelutf

zzlelutf1#

我的错误是在实体类上使用@Immutable,我删除了它,现在它返回所有字段!

相关问题