当前位置: 首页 > 知识库问答 >
问题:

为什么我的查询响应返回空值?

宋昊然
2023-03-14
public class Customer implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 8348682056500740593L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    
    private String firstName ;
    private String lastName;

public interface CustomerInter {
    
    String getFirstName();
    String getLastName();
    
}

@Repository
public interface CustomerAccountRepo extends JpaRepository <Customer, Long  > 

{

     Optional<Customer> findById(Long id);
     
    // Optional<Customer> findByFirstNameAndLastName(String firstName , String lastName);

     
     @Query(value="select c.firstName, c.lastName from Customer c")
     List<CustomerInter> findByFirstNameAndLastName();
}



@Service
public class CustomerAccountService {
    
    @Autowired  
    private CustomerAccountRepo custRepo;



    public List<CustomerInter> getFirstNameAndLastNameOnly() throws Exception {
    //    LOGGER.info("Inside getAllCustomerFirst&LastName");
        List<CustomerInter> customerName = custRepo.findByFirstNameAndLastName();
        return customerName;
        }
    
  }


@CrossOrigin(origins = {"http://localhost:3000"})
@RestController
public class CustomerController {
    
        @Autowired
        CustomerAccountService customerRepo;
    
        @GetMapping(value="/customerFirstAndLastName")
         public List<CustomerInter> getFirstNameAndLastNameOnly() throws Exception
         {
             
            return customerRepo.getFirstNameAndLastNameOnly();
             
         }

共有1个答案

阚原
2023-03-14

你想做的事情不会这样做的。

首先,您有一个JParepository ,实体的类型是customer和idlong。因此,JPAREPO的查询将只处理Customer对象。

如果只需要具有firstnamelastname的对象,那么创建一个class(DTO),只包含这些对象,并将查询更改为:

....

@Query(value="SELECT new path.to.your.package.CustomerDTO(c.firstName, c.lastName) " +
        "FROM Customer c")
     List<CustomerDTO> findByFirstNameAndLastName();
 类似资料:
  • 我是Java和创建API的新手。我试图简单地发出一个后请求,并得到一个具体的值。以下是我的代码: ProjectResponse类简单地包含: 问题是,id aøwaus 被返回为 (id=空)。即使当我使用“字符串”而不是项目响应时,一切正常,我看到ID已创建。因此,由于某种原因,将响应映射到项目响应类存在问题。 有人知道可能出了什么问题吗?

  • 我有以下表格结构: 1-课程(course_id、course_nam、语言、course_price、create_date、average_rating、course_description、certifica_price、course_creator_id) 2-学生(学生证、钱包) 3-折扣(折扣id、折扣课程id、允许的许可课程id、开始日期、结束日期、百分比) 4-报名(student

  • 问题内容: 我有一堆应聘者,他们有一些或多个工作,每个人都在公司工作,并且使用了一些技能。 坏的ascii艺术如下: 这是我的数据库: 。 。 。 。 这是我对查询的尝试(请注意,我打算将通配符更改为字段名称;我只是想使某些功能生效): HediSql说 查询出了什么问题?我希望从不良的ascii艺术中可以清楚地知道我要达到的目标。 (此外,它对我连接表的顺序是否有任何速度差异?我将担心新的MyS

  • 问题内容: 快速版本 基本上,我正在更新hibernate表,后续查询正在加载陈旧的值。 详细版本 hibernate(3.3.1.GA)和EhCache(2.4.2)。 包含页面的持久对象,我将页面添加到本书的中间。我正在使用Databinder / Wicket,尽管我认为这并不相关。 适用的字段/方法是: 最终结果是,有一个新页面添加到列表中,并且数据库也进行了相应更新,我已经在我的数据存储

  • 我正在查询SQL数据库,但由于某些原因,结果项会随机返回。这是我的密码: searchFriendEmailArrayNew是一个电子邮件地址数组,因此当我查询数据库表时,它会使用电子邮件来查找该用户。数组始终保持一致且顺序相同: user1@email.com 查询总是按照这个顺序进行的。 然后,我查询用户的所选字段,在本例中,我查询的是“isriding”字段。此字段是返回true或false

  • 我正在使用Android的纵隔检索我用我的应用程序录制的视频文件的持续时间/日期。它对旧文件很好,我记录的最新文件确实返回空(不是空)光标。我不明白为什么会发生这种情况,是纵隔没有立即更新还是我下面使用的代码有问题?谢谢你的帮助!