有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAlang.ClassCastException:JobEntity不能转换为JobExtrapt(使用Spring数据投影)

使用投影获取实体类JobEntity的特定字段,使用JobExtrapt

作业实体类https://pastebin.com/GPeQDiRp

作业摘录类

@Projection(
        name = "jobProjection",
        types = { JobEntity.class })
public interface JobExcerpt {
    Long getId();

    JobEntity.Status getStatus();

    List<BatchEntity> getBatches();

    Date getCreatedOn();

    Long getRetailerId();
}

非常简单的作业摘录存储库类

@RepositoryRestResource(excerptProjection = JobExcerpt.class)
public interface JobExcerptRepository extends JpaRepository<JobEntity, Long> {

    JobExcerpt findByIdAndRetailerId(Long jobId, Long retailerId);

}

失败的代码行:

JobExcerpt jobExcerpt = jobExcerptRepository.findByIdAndRetailerId(jobId, retailerId);

问题是。。。这行代码中没有可见的(强制转换)类运算符。它不应该被显示,对吗

堆栈跟踪https://pastebin.com/iNG8h5dn


共 (2) 个答案

  1. # 1 楼答案

    你似乎重新运行了一个工作摘要预测。这就是为什么你有ClassCastException。应该是这样的

    @RepositoryRestResource(excerptProjection = JobExcerpt.class)
    public interface JobExcerptRepository extends JpaRepository<JobEntity, Long> {
    
        JobEntity findByIdAndRetailerId(Long jobId, Long retailerId);
    
    }
    
    JobEntity jobEntity = jobExcerptRepository.findByIdAndRetailerId(jobId, retailerId);
    
    
  2. # 2 楼答案

    如果你想从你的领域获得特定的领域。然后你可以简单地做这些事情

    // JobExcerpt.java
    
    public interface JobExcerpt {
    
        Long getId();
    
        Status getStatus();
    
        List<BatchEntity> getBatches();
    
        Date getCreatedOn();
    
        Long getRetailerId();
    }
    
    
    //  JobExcerptRepository.java
    @RepositoryRestResource(excerptProjection = JobExcerpt.class)
    public interface JobExcerptRepository extends JpaRepository<JobEntity, Long> {
    
        JobExcerpt findByIdAndRetailerId(Long jobId, Long retailerId);
    
    }
    
    JobExcerpt jobExcerpt = jobExcerptRepository.findByIdAndRetailerId(jobId, retailerId)