【问题标题】:The method save(User) is undefined for the type UserRepositoryJava(67108964)未定义 UserRepositoryJava(67108964) 类型的方法 save(User)
【发布时间】:2021-06-17 00:13:04
【问题描述】:

我是 JAVA 和 Spring boot 的新手。 我创建了一个 spring boot 项目,我用这段代码创建了一个实体类:

package com.example.TEST_WEB;
import javax.persistence.*;
@Entity
@Table(name="users")
public class User {
    @Id
    //Strategy = GenerationType. IDENTITY : La génération de la clé primaire se fera à partir d’une Identité propre au SGBD.
    // Il utilise un type de colonne spéciale à la base de données.
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
     
    @Column(nullable = false, unique = true, length = 45)
    private String email;
     
    @Column(nullable = false, length = 64)
    private String password;
     
    @Column(name = "first_name", nullable = false, length = 20)
    private String firstName;
     
    @Column(name = "last_name", nullable = false, length = 20)
    private String lastName;
     
    // getters and setters are not shown 

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

然后我用这段代码创建了一个界面:

import com.example.TEST_WEB.User;
import org.springframework.data.jpa.repository.JpaRepository;
 
public interface UserRepository extends JpaRepository<User, Long> {
 
}

为了测试我的代码,我创建了一个此类:

package com.example.TEST_WEB;
import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.Replace;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.annotation.Rollback;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;

 

@DataJdbcTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
//une transaction gérée par un test doit être annulée une fois la méthode de test terminée
@Rollback(false)

public class UserRepositoryTests {
 
    @Autowired
    private UserRepository repo;

    @Autowired
    private TestEntityManager entityManager;
     
   
    // test methods go below
    @Test
    public void testCreatUser(){
    User user = new User();
    user.setEmail("ravikumar@gmail.com");
    user.setPassword("ravi2020");
    user.setFirstName("Ravi");
    user.setLastName("Kumar");
     
    User savedUser = repo.save(user);
     
    User existUser = entityManager.find(User.class, savedUser.getId());
     // assert c'est pour la vérification
    assertThat(user.getEmail()).isEqualTo(existUser.getEmail());

    }
}

--> 但这给了我 2 个错误:

  • 未定义类型 UserRepositoryJava(67108964) 的方法 save(User) 和
  • 未为 UserJava(67108964) 类型定义方法 getId()

【问题讨论】:

  • @luk2302 JpaRepository 肯定有保存方法!这是从 CrudRepository 继承的
  • 带有@SpringBootApplication 的类在哪个包中?
  • 你必须使用 DataJpaTest 而不是 DataJdbcTest
  • @SimonMartinelli 我用 DataJpaTest 纠正了它,但它仍然给我同样的错误
  • 你能把代码贴在你有@SpringBootApplication 的地方并显示 pom.xml 或者把项目上传到 GitHub 我可以看看

标签: java spring-boot maven jpa


【解决方案1】:
  1. 您必须将UserRepository 移动到包com.example.TEST_WEB

  2. 那么你必须从src/test/java中删除UserRepository

  3. 最后在 User 类中添加getId()setId() 方法

【讨论】:

  • 非常感谢您的帮助,现在可以使用了
  • 太好了。请采纳我的答案作为正确答案谢谢
  • 很抱歉这个问题,但我在哪里可以这样做?
  • 我的答案左边应该有一个复选标记可以点击
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 2019-04-14
  • 2015-06-10
相关资源
最近更新 更多