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

Spring JPA/Hibernate存储库findOne方法返回null

赏航
2023-03-14

我刚开始使用Spring和JPA/Hibernate,我会拔下我的头发。

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;

@Entity
@Table(name = "user")
public class User {

    @Id
    private String email;

    @NotNull
    private String nomUtilisateur;

    @NotNull
    private Date dateInscription;

    @NotNull
    private long nbSoireeOrganisee;

    @NotNull
    private float noteGenerale;

    public User(String aEmail, String aNomUtilisateur) {
        email = aEmail;
        nomUtilisateur = aNomUtilisateur;
        dateInscription = new Date();
        nbSoireeOrganisee = 0;
        noteGenerale = 0;


    }

    public User() {
        // Only JPA
    }

    public String getUserEmail() {
        return email;
    }

    public String getUserName() {
        return nomUtilisateur;
    }

    public Date getDateInscription() {
        return dateInscription;
    }

    public long getNbSoireeOrganisee() {
        return nbSoireeOrganisee;
    }

    public float getNoteGenerale() {
        return noteGenerale;
    }

    @Override
    public String toString() {
        return String.format("User[name='%s']", this.nomUtilisateur);
    }
}
import fr.afti.proto.fact.models.User;
import org.springframework.data.jpa.repository.JpaRepository;

import javax.transaction.Transactional;

@Transactional
public interface UserRepository extends JpaRepository<User, String> {

    User findByNomUtilisateur(String nomUtilisateur);
}

这是我的usercontroller:

import fr.afti.proto.fact.models.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin
public class UserController {

    @Autowired
    private UserRepository userRepository;

    // CREATE User
    // This function works
    @PostMapping("/create/{aEmail}/{aNomUtilisateur}")
    public String create(@PathVariable String aEmail, @PathVariable String aNomUtilisateur) {
        try {
            User newUser = new User(aEmail, aNomUtilisateur);
            userRepository.saveAndFlush(newUser);

        } catch (Exception ex) {
            return "Error when trying to create a user";
        }
        return "User successfully created";
    }


    // DELETE User
    // This function doesn't work
    @DeleteMapping("/delete/user/{email}")
    public String delete(@PathVariable String email) {
        userRepository.delete(email);
        return "true";
    }

    // READ User
    // This funcction doesn't work
    @GetMapping("user/{email}")
    public
    @ResponseBody
    String getUserByMail(@PathVariable String email) {
        User uRes = userRepository.findOne(email); // THIS RETURN NULL
        //User uRes = userRepository.findByNomUtilisateur("Toto");
        return uRes.getUserName();
    }
}

谢谢你的帮助。

共有1个答案

宋英杰
2023-03-14

您的代码有一些小问题:

为了使用实体的属性查询实体,它至少需要那些属性的getter。因此添加email属性:

...
public String getUserEmail() {
    return email;
}
...

如果向当前控制器发送Get请求:

GET localhost:8080/user/test@example.com
@DeleteMapping("/delete/user/{email:.+}")
...

@GetMapping("user/{email:.+}")
...
@GetMapping("user")
public String getUserByMail2(@RequestParam("email") String email) {
    User uRes = userRepository.findOne(email); // THIS RETURN NULL
    return uRes.getUserName();
}

并使用:

GET localhost:8080/user?email=test%40example.com

请参阅此处获得完整的工作示例。

 类似资料:
  • 主类: 我尝试的任何与存储库相关的方法都返回null。有人能帮我提个建议吗?

  • 此示例存储库有一个方法 现在不需要使用Robolectric来单元测试了吗?

  • 我试图获取一个列表从数据库和findAll()返回空列表。我有多个jpa存储库,但只有一个不工作。这是代码: 这就是实体: 当我调用product类别epository.findAll()时,它返回空列表,因此我在数据库中有许多条目。谢谢你的帮助!

  • java java 在TaskServiceImpl.java.FindAll(pageRequest)中返回NULL。我不太熟悉Mockito,想知道用它创建模拟存储库是否会导致问题?当我这样做时,它工作得很好。findall()没有分页。我使用PagingAndSortingRepository中的findAll(Pageable)方法有问题吗?谢了!

  • 问题内容: 目前正被此错误推高。 我正在使用mongodb的mongojs包装器运行node.js应用程序。我在默认端口上启动mongod,然后运行 但是err和user都为“ null”。据我所知,err应该填充某种数据,即使找不到任何东西。 如何使回调函数正常工作?请原谅新手问题。 问题答案: 当查询找不到至少一个匹配的文档时,则将回调的第二个参数(在这种情况下)设置为。这不是错误,也是。因此