gpt4 book ai didi

java - Django ORM 到 Spring Hibernate 的映射

转载 作者:行者123 更新时间:2023-11-30 10:13:39 24 4
gpt4 key购买 nike

对于在 spring/hibernate 中包含用户实体的 userRepository,最接近的命令(如果有命令)是什么?

  1. 通过 PK/ID 获取对象:User.objects.get(id=2)
  2. 按字段获取对象:User.objects.get(name="david", age=20)
  3. 按字段获取对象:User.objects.filter(name="david")
  4. 按字段删除对象:User.objects.filter(name="david").delete)
  5. 按字段更新对象:User.objects.filter(name="david").update(name="dave")

我如何在我的 UserRepository 的 Java/Spring 中执行上述操作:

public interface UserRepository extends JpaRepository<User, Integer> {

}

最佳答案

像这样更新您的 UserRepository:

public interface UserRepository extends JpaRepository<User, Integer> {
User findOneByNameAndAge(String name, int age); // Answer point 2

List<User> findByName(String name); // Answer point 3

@Modifying
@Query("delete from User u where u.name = ?1")
int deleteByName(String name); // Answer point 4

@Modifying
@Query("update User u set u.name = ?1 where u.name = ?2")
int updateByName(String newName, String oldName); // Answer point 5
}

请注意,对于您问题的第 1 点,JpaRepository 已经为您提供了此方法:

userRepository.findOne(2);

使用方法如下:

// Provide necessary annotations..
public class UserRepositoryIntTest {

@Autowired UserRepository userRepository;

@Test
public void testThemAll() {
this.userRepository.findOne(2); // 1
this.userRepository.findOneByNameAndAge("david", 20); // 2
this.userRepository.findByName("david"); // 3
this.userRepository.deleteByName("david"); // 4
this.userRepository.updateByName("dave", "david"); // 5
}

}

HTH

关于java - Django ORM 到 Spring Hibernate 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51250849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com