亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

錯誤查找對象 Spring JPA:“通過持久屬性的反射訪問字段時出錯”

錯誤查找對象 Spring JPA:“通過持久屬性的反射訪問字段時出錯”

小唯快跑啊 2024-01-17 21:12:08
我有以下課程:@Entity(name = "focusoc_orbit")@Datapublic class OrbitAdapter extends Adapter{  @Id  private String              id;  ...  public String getId() {    return id;  }  public void setId(String id) {    this.id = id;  }  ...}和,@Entity(name = "focusoc_conjunction")@Datapublic class ConjunctionAdapter extends Adapter {  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  private Long         id;  @ManyToOne  @JoinColumn(name = "target_id")  private OrbitAdapter target;  @ManyToOne  @JoinColumn(name = "chaser_id")  private OrbitAdapter chaser;  ...  public OrbitAdapter getTarget(){    return target;  }  public void setTarget(OrbitAdapter target){    this.target = target;  }  public String getChaserId(){    return chaserId;  }  public void setChaser(OrbitAdapter chaser){    this.chaser = chaser;  }  ...}我還定義了存儲庫:public interface ConjunctionRepository extends PagingAndSortingRepository<ConjunctionAdapter, Long> {  public ConjunctionAdapter findByTargetAndChaserAndTimeOfCloseApproach(String target, String chaser, Date timeOfCloseApproach);}當我嘗試撥打電話時,ConjunctionAdapter c = conjunctionRepository.findByTargetAndChaserAndTimeOfCloseApproach(targetId, chaserId, timeOfCloseApproach());它返回錯誤:org.hibernate.property.access.spi.PropertyAccessException:通過持久屬性 [gcs.fds.focusoc.adapter.OrbitAdapter# 的反射訪問字段 [private java.lang.String gcs.fds.focusoc.adapter.OrbitAdapter.id] 時出錯id]:02035A”我嘗試了很多不同的解決方案,但發現它對我不起作用。有什么幫助嗎?
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

我解決了!


將@Table類的注釋@Data更改為表名。所以,


@Entity

@Table(name = "focusoc_orbit")

public class OrbitAdapter extends Adapter{


  @Id

  private String              id;


  ...


  public String getId() {

    return id;

  }


  public void setId(String id) {

    this.id = id;

  }


  ...


}

和,


@Entity

@Table(name = "focusoc_conjunction")

public class ConjunctionAdapter extends Adapter {


  @Id

  @GeneratedValue(strategy = GenerationType.IDENTITY)

  private Long         id;


  @ManyToOne

  @JoinColumn(name = "target_id")

  private OrbitAdapter target;


  @ManyToOne

  @JoinColumn(name = "chaser_id")

  private OrbitAdapter chaser;


  ...

  public OrbitAdapter getTarget(){

    return target;

  }

  public void setTarget(OrbitAdapter target){

    this.target = target;

  }

  public String getChaserId(){

    return chaserId;

  }

  public void setChaser(OrbitAdapter chaser){

    this.chaser = chaser;

  }


  ...


}

這樣做會返回錯誤,


java.lang.IllegalArgumentException:參數值 [02035A] 與預期類型不匹配 [gcs.fds.focusoc.adapter.OrbitAdapter (n/a)]


所以我在Repository中添加了注釋@Query來指定必須在數據庫中搜索哪些內容,


public interface ConjunctionRepository extends PagingAndSortingRepository<ConjunctionAdapter, Long> {


  @Query("SELECT c FROM ConjunctionAdapter c WHERE c.target.id = :target AND c.chaser.id = :chaser AND c.timeOfCloseApproach = :timeOfCloseApproach")

  public ConjunctionAdapter findByTargetAndChaserAndTimeOfCloseApproach(String target, String chaser, Date timeOfCloseApproach);

}

并解決了!


查看完整回答
反對 回復 2024-01-17
  • 1 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號