反射错误无法设置字段值

Posted

技术标签:

【中文标题】反射错误无法设置字段值【英文标题】:Could not set field value by reflection error 【发布时间】:2020-07-16 13:19:31 【问题描述】:

我有一个像下面这样的课程:

import lombok.Getter;
import lombok.Setter;
import org.framework.model.core.baseInfo.SubSystemType;

import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;


@Entity
@Table(name = "CORE_POWER_TYPE_DOCUMENT")
@PrimaryKeyJoinColumn(name = "Base_Power_Type_Id")
@Getter
@Setter
public class StoragePowerType extends BasePowerType 

    @Override
    public SubSystemType getsystemType() 
        return SubSystemType.storing;
    



以下异常 id 被抛出:

"****无法通过反射设置字段值 [org.model.core.power.type.StoragePowerType@203cb33d] 值****"

你知道是什么问题吗??

【问题讨论】:

请在代码和引号中以文本形式提供代码和异常。 我的文字有问题 【参考方案1】:

BasePowerType 中的某些属性很可能被声明为 private,没有 getter 和 setter。

JPA 实体的每个属性必须要么是 public,要么定义了方法 get<PropertyName>()set<PropertyName>()。否则,您正在使用的框架(Hibernate?)将无法访问该属性。 所以使用任何一个:

public Long id;

或者:

private Long id;

public Long getId()  return id; 
public void setId(Long value)  id = value; 

尝试遵循here: Create the perfect JPA entity [closed] 的指导。

【讨论】:

我在 basePowerType 类中没有任何属性!只有我覆盖在其根类中定义的公共类。

以上是关于反射错误无法设置字段值的主要内容,如果未能解决你的问题,请参考以下文章

org.springframework.orm.jpa.JpaSystemException:无法通过反射设置字段值 [POST_INSERT_INDICATOR] 值

运行时错误 3032,无法执行此操作 ms-access

如何使用反射设置另一个结构的字段之一的结构字段值?

java反射获取属性值

利用反射获取字段并获取值或者设置值

C# 反射 设置字段值无效的解决办法