Spring 为什么冬眠不';如果没有getter&;实体中的setter

Spring 为什么冬眠不';如果没有getter&;实体中的setter,spring,hibernate,rest,spring-boot,jpa,Spring,Hibernate,Rest,Spring Boot,Jpa,我有一个实体类,没有getter和setter 我在数据库中有4条记录。当我尝试创建rest服务并从db查询这些数据时,hibernate返回4个空元素 [{},{},{},{},{}] Hibernate尝试将记录设置到实体中,但由于没有setter方法而失败 所以为什么hibernate不抛出异常,比如“并没有setter,设置失败了…”,它试图设置并返回空列表 告诉我原因,这是一个bug还是在不同的日志路径中返回错误,我不知道 编辑:这是Entity.class import javax

我有一个实体类,没有getter和setter

我在数据库中有4条记录。当我尝试创建rest服务并从db查询这些数据时,hibernate返回4个空元素

[{},{},{},{},{}]
Hibernate尝试将记录设置到实体中,但由于没有setter方法而失败

所以为什么hibernate不抛出异常,比如“并没有setter,设置失败了…”,它试图设置并返回空列表

告诉我原因,这是一个bug还是在不同的日志路径中返回错误,我不知道

编辑:这是Entity.class

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "entry_table", schema = "public")
public class Entry {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ENTRY_ID")
    private Long entryId;

    @Column(name = "USER_NAME")
    private String userName;

    @Column(name = "USER_ENTRY")
    private String userEntry;

    public Entry(Long entryId, String userName, String userEntry) {
        this.entryId = entryId;
        this.userName = userName;
        this.userEntry = userEntry;
    }

    public Entry() {

    }
}

简单的回答是它不是一个BUG

正如你从文件中看到的

标准的、可移植的JPA本质上需要这一点。否则你的模型 将违反上述关于访问 实体持久状态字段直接来自实体外部 本身

虽然Hibernate不需要它,但建议遵循 通过为实体定义getter和setter,实现JavaBean约定 持久属性。您仍然可以告诉Hibernate直接访问 实体的字段

您得到的是空元素,因为您可能不会向外界公开实体类的任何字段。所以这是正常的

从医生那里

使用基于字段的访问的优点是,一些实体属性 可以从实体外部隐藏。这种属性的一个例子是 实体@Version字段,数据不能对其进行操作 访问层。使用基于字段的访问,我们可以省略getter 这个版本字段的setter和Hibernate仍然可以 利用乐观并发控制机制


简单的回答是它不是一个BUG

正如你从文件中看到的

标准的、可移植的JPA本质上需要这一点。否则你的模型 将违反上述关于访问 实体持久状态字段直接来自实体外部 本身

虽然Hibernate不需要它,但建议遵循 通过为实体定义getter和setter,实现JavaBean约定 持久属性。您仍然可以告诉Hibernate直接访问 实体的字段

您得到的是空元素,因为您可能不会向外界公开实体类的任何字段。所以这是正常的

从医生那里

使用基于字段的访问的优点是,一些实体属性 可以从实体外部隐藏。这种属性的一个例子是 实体@Version字段,数据不能对其进行操作 访问层。使用基于字段的访问,我们可以省略getter 这个版本字段的setter和Hibernate仍然可以 利用乐观并发控制机制


rest响应为空是因为JSON序列化在实体中找不到访问器。对于所有属性,您至少需要
getter
,JSON序列化才能工作并显示正确的响应


Hibernate正确地填充实体并将它们发送到REST层

空rest响应是由于JSON序列化没有在实体中找到访问器。对于所有属性,您至少需要
getter
,JSON序列化才能工作并显示正确的响应


Hibernate正确地填充实体并将它们发送到REST层

Hibernate试图将记录设置到实体中,但由于没有setter方法而失败。
您如何知道Hibernate正在尝试设置值,但由于缺少setter而导致bco失败?实例变量是可访问的还是私有的?这[{}、{}、{}、{}、{}、{}、{}]是REST api的响应还是您检查了DAO层?实体类的实例变量是可从外部访问的吗?用于在数据库中保存新实体实例,如何填充这些实例变量?能否发布实体类?@MadhusudanaReddySunnapu,因为它返回空列表。
Hibernate尝试将记录设置到实体中,但失败,因为没有setter方法。
您如何知道Hibernate正在尝试设置值,但由于缺少setter而导致BCO失败?实例变量是可访问的还是私有的?这[{}、{}、{}、{}、{}、{}、{}]是REST api的响应还是您检查了DAO层?实体类的实例变量是可从外部访问的吗?为了在数据库中保存新的实体实例,如何填充这些实例变量?能否发布实体类?@madhusudanareddysunapu,因为它返回空列表。