Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找对象Spring JPA时出错:“通过反射访问持久属性字段时出错”_Java_Spring_Jpa_Reflection - Fatal编程技术网

Java 查找对象Spring JPA时出错:“通过反射访问持久属性字段时出错”

Java 查找对象Spring JPA时出错:“通过反射访问持久属性字段时出错”,java,spring,jpa,reflection,Java,Spring,Jpa,Reflection,我有以下课程: @Entity(name = "focusoc_orbit") @Data public class OrbitAdapter extends Adapter{ @Id private String id; ... public String getId() { return id; } public void setId(String id) { this.id = id; } ... }

我有以下课程:

@Entity(name = "focusoc_orbit")
@Data
public class OrbitAdapter extends Adapter{

  @Id
  private String              id;

  ...

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  ...

}
以及

我还定义了存储库:

public interface ConjunctionRepository extends PagingAndSortingRepository<ConjunctionAdapter, Long> {
  public ConjunctionAdapter findByTargetAndChaserAndTimeOfCloseApproach(String target, String chaser, Date timeOfCloseApproach);
}
它返回错误:

org.hibernate.property.access.spi.PropertyAccessException:错误 访问字段[private java.lang.String] gcs.fds.focusoc.adapter.OrbitAdapter.id]通过反射进行持久化 属性[gcs.fds.focusoc.adapter.OrbitAdapterid]:02035A

我尝试了很多我发现的不同的解决方案,但对我来说不起作用。有什么帮助吗?

我解决了

使用表名更改@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;
  }

  ...

}
以及

这样做会返回错误

java.lang.IllegalArgumentException:参数值[02035A]未指定 匹配预期类型[gcs.fds.focusoc.adapter.OrbitAdapter n/a]

因此,我将注释@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);
}
解决了

我解决了

使用表名更改@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;
  }

  ...

}
以及

这样做会返回错误

java.lang.IllegalArgumentException:参数值[02035A]未指定 匹配预期类型[gcs.fds.focusoc.adapter.OrbitAdapter n/a]

因此,我将注释@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);
}
解决了

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);
}