Java Spring数据JPA,Hibernate作为JPA提供程序
使用Spring引导应用程序和Spring数据jpa,hibernate作为jpa提供程序 在一个扩展JpaRepository的接口中创建了一个默认方法 请检查代码Java Spring数据JPA,Hibernate作为JPA提供程序,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,使用Spring引导应用程序和Spring数据jpa,hibernate作为jpa提供程序 在一个扩展JpaRepository的接口中创建了一个默认方法 请检查代码 public interface UserDao extends JpaRepository<User, UUID> { default void softDelete(UUID id) { User existingUser = findOne(id); if (existingUser != n
public interface UserDao extends JpaRepository<User, UUID> {
default void softDelete(UUID id) {
User existingUser = findOne(id);
if (existingUser != null)
existingUser.setActive(false);
throw new EntityNotFoundException();
}
}
知道我错过了什么吗 两件事:
EntityNotFoundException
异常,因为我假设您想在找不到任何记录时发送该异常default User softDelete(UUID id) {
User existingUser = findOne(id);
if (existingUser != null) {
existingUser.setActive(false);
} else {
throw new EntityNotFoundException();
}
return existingUser;//you may want to save this user again with isActive flag now false
}
EntityNotFoundException
异常,因为我假设您想在找不到任何记录时发送该异常default User softDelete(UUID id) {
User existingUser = findOne(id);
if (existingUser != null) {
existingUser.setActive(false);
} else {
throw new EntityNotFoundException();
}
return existingUser;//you may want to save this user again with isActive flag now false
}
除了SMA提供的答案外,还有两件事
除了SMA提供的答案外,还有两件事
你的问题问对了!我必须补充的是,您应该尝试使用JpaRepository,而不在其中放入任何逻辑,只需将其用于CRUD操作,并在您的服务层中执行逻辑。像这样:
public interface UserDao extends JpaRepository<User, UUID> {
@Modifying
@Query("update User u set u.active = false where u.id = :id")
default User softDelete(@Param("id) UUID id) throws EntityNotFoundException;
}
public接口UserDao扩展了JpaRepository{
@修改
@查询(“更新用户u设置u.active=false,其中u.id=:id”)
默认用户softDelete(@Param(“id”)UUID id)抛出EntityNotFoundException;
}
然后您可以在服务中执行错误处理。
下面的示例展示了一些编写自定义查询以更好地满足您的需求的好例子。SMA抓住了您的问题所在!我只需要补充一点,您应该尝试使用JpaRepository,而不在其中放入任何逻辑,只需将其用于CRUD操作,并在服务层中执行逻辑。例如:
public interface UserDao extends JpaRepository<User, UUID> {
@Modifying
@Query("update User u set u.active = false where u.id = :id")
default User softDelete(@Param("id) UUID id) throws EntityNotFoundException;
}
public接口UserDao扩展了JpaRepository{
@修改
@查询(“更新用户u设置u.active=false,其中u.id=:id”)
默认用户softDelete(@Param(“id”)UUID id)抛出EntityNotFoundException;
}
然后您可以在服务中执行错误处理。
下面展示了一些编写自定义查询以更好地满足您需要的好例子OMG。我只是忘记了我的java基础知识。我很抱歉,甚至张贴了这个问题。但是非常感谢大家。这太愚蠢了(天哪,我刚刚忘记了我的java基础知识。我很抱歉发布了这个问题。但非常感谢大家。这太愚蠢了。)(