簡體   English   中英

無法通過反射休眠獲取字段值

[英]could not get a field value by reflection hibernate

我在 jpa 中更新對象時遇到問題

我有豆用戶

public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    private Long id;
    @Column(name = "name", nullable = false)
    private String name;
    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "fk_program_rating")
    private List<Rating> ratingList = new ArrayList<Rating>();
}

public class Rating extends BaseModel {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    private Long id;
    @ManyToOne()
    @JoinColumn(name = "fk_program_rating", nullable = false)
    @ForeignKey(name = "FK_prog_rate")
    @OnDelete(action = OnDeleteAction.CASCADE)
    private Program program;
}

當嘗試更新時給我異常:無法通過反射獲得字段值,當表評級有行時發生

錯誤 TransactionInterceptor:434 - 應用程序異常被提交異常 com.vodafone.visradio.dataaccess.exception.DataAccessException: org.hibernate.PropertyAccessException: 無法通過 com.vodafone.visradio.dataaccess.model.Rating 的反射獲取器獲取字段值。ID

關於這個問題的任何幫助
謝謝

嘗試更改映射注釋。 取出@JoinColumn從注釋ratingList和添加mappedBy屬性:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "user") 
private List<Rating> ratingList = new ArrayList<Rating>();

其中userRating實體中與User具有@ManyToOne關聯的屬性名稱。

可能導致這種情況的另一件事是,如果您沒有完全正確地執行您的標准。

例如,如果您將"rating"放在標准中,但您實際上需要"rating.id" 這將導致出現相同的錯誤消息。

因此,如果您檢查了實體定義,請檢查以確保在失敗的實際查詢中沒有像這樣的簡單錯誤。 這就是我遇到類似錯誤時的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM