【问题标题】:How to write query by using findBy..() methods for one record如何使用 findBy..() 方法为一条记录编写查询
【发布时间】:2018-06-26 02:39:20
【问题描述】:

我有一个实体类 User_Details

package vl.cybersecurityapplication.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "User_Details")
public class User_Details implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "UserId")
    private int userId;
    @Column(name = "FirstName")
    private String firstName;
    @Column(name = "LastName")
    private String lastName;
    @Column(name = "Password")
    private String password;
    @Column(name = "E_Mail")
    private String eMail;
    @Column(name = "Mobile_Num")
    private int mobileNumber;

    //getters and setters
}

这是我的repo界面

package vl.cybersecurityapplication.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import vl.cybersecurityapplication.model.User_Details;

public interface IUserRepository extends JpaRepository<User_Details, Long> {

    public Integer findMobileNumberByName(String userName);


}

这是我的回购类

package vl.cybersecurityapplication.repository;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import vl.cybersecurityapplication.model.User_Roles;

@Transactional
@Repository
public class UserRepository{

    @Autowired
    IUserRepository userRepository;

    public Integer findMobileNumberByName(@PathVariable String lastName) {
        int mobileNumber = userRepository.findMobileNumberByName("shaik");
        System.out.println("Mobile Number : "+mobileNumber);
        return mobileNumber;
    }
}

我是 Spring Boot 和 JPA 的新手。 这里我需要使用姓氏查询 User_Details 表中的手机号码。 即,从 User_Details 中选择 Mobile_Num,其中 LastName=“xyz”; 有人可以帮助我如何在我的 repo 类中编写此查询。

【问题讨论】:

  • 请向我们展示您查询所需的对象。 JPA 是基于对象的
  • @Jens 你现在可以回复了吗

标签: spring spring-boot spring-data spring-data-jpa jpql


【解决方案1】:

你可以这样写。但是您不能只获取 MobileNumber。你会得到一个完整的对象。

 List<User> findByLastName(String lastname).  

如果您只想获取某些字段,则应查看Projections

【讨论】:

  • 那么返回类型是什么。还请提及返回类型
【解决方案2】:

无需使用本机查询。 JPA 支持基于对象的查询。 您可以使用 List findByLastName(String lastname) ,它将在后端生成该查询并返回结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2013-09-29
    • 2019-06-29
    相关资源
    最近更新 更多