其中 class 实现了 CrudRepository
Which class has the implementation of CrudRepository
我正在使用 Spring Data JPA 来创建和查询我的表。
这是我的 UserService
class,
@Service
public class UserService {
@Autowired
UserRepository userRepository;
public User saveUser(User u) {
User savedUser = userRepository.save(u); //<----- line that I debug
return savedUser;
}
public boolean usernameExists(String username) {
List<User> users = userRepository.findByUsername(username); //<----- line that I debug
return !users.isEmpty();
}
}
这是 UserRepository
class
public interface UserRepository extends CrudRepository<User, Integer> {
public List<User> findByUsername(String username);
}
我正在调试我的代码,当到达上面的“linesToDebug”时,我在我的 IDE 中执行了一个 Step-Into,希望我会被带到save()
和 findByUsername()
方法的实现,但没有任何反应,用户被保存到存储库,我的 IDE (Netbeans 8.0) 执行不导航到这些方法的实现。
哪些class实现了这些方法?
编辑:
这是我在 save() 方法的控制台中得到的:
2021-06-06 16:24:36.779 DEBUG 6948 --- [nio-8181-exec-5] org.hibernate.SQL : insert into user (date_created, password, username) values (?, ?, ?)
2021-06-06 16:24:36.784 TRACE 6948 --- [nio-8181-exec-5] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Sun Jun 06 16:24:27 IST 2021]
2021-06-06 16:24:36.791 TRACE 6948 --- [nio-8181-exec-5] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [a$Ad0G05HssJUb4xaEMTqFTOlWZijMbXBSLSgyxbjVQzOEdZn7Lxuz2]
但是 org.hibernate
包中没有名为 SQL
的 class。
关于您的实际问题,这个问题及其答案可能会有所帮助:
How do I step into an implemented method in debug mode in NetBeans?
关于您在标题中提出的问题:
Spring Data JPA 中的 CrudRepository
实现是 SimpleJpaRepository
关于您 post 的 body 中的问题:
public List<User> findByUsername(String username);
不是预先存在的接口的一部分。所以没有直接的实现。相反,一些动态代码通过代理执行。
如果您对查询的实际执行更感兴趣,PartTreeJpaQuery.getExecution()
if you are interested in the construction of the query and AbstractJpaQuery.execute()
是一个很好的调试切入点。
我正在使用 Spring Data JPA 来创建和查询我的表。
这是我的 UserService
class,
@Service
public class UserService {
@Autowired
UserRepository userRepository;
public User saveUser(User u) {
User savedUser = userRepository.save(u); //<----- line that I debug
return savedUser;
}
public boolean usernameExists(String username) {
List<User> users = userRepository.findByUsername(username); //<----- line that I debug
return !users.isEmpty();
}
}
这是 UserRepository
class
public interface UserRepository extends CrudRepository<User, Integer> {
public List<User> findByUsername(String username);
}
我正在调试我的代码,当到达上面的“linesToDebug”时,我在我的 IDE 中执行了一个 Step-Into,希望我会被带到save()
和 findByUsername()
方法的实现,但没有任何反应,用户被保存到存储库,我的 IDE (Netbeans 8.0) 执行不导航到这些方法的实现。
哪些class实现了这些方法?
编辑: 这是我在 save() 方法的控制台中得到的:
2021-06-06 16:24:36.779 DEBUG 6948 --- [nio-8181-exec-5] org.hibernate.SQL : insert into user (date_created, password, username) values (?, ?, ?)
2021-06-06 16:24:36.784 TRACE 6948 --- [nio-8181-exec-5] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Sun Jun 06 16:24:27 IST 2021]
2021-06-06 16:24:36.791 TRACE 6948 --- [nio-8181-exec-5] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [a$Ad0G05HssJUb4xaEMTqFTOlWZijMbXBSLSgyxbjVQzOEdZn7Lxuz2]
但是 org.hibernate
包中没有名为 SQL
的 class。
关于您的实际问题,这个问题及其答案可能会有所帮助: How do I step into an implemented method in debug mode in NetBeans?
关于您在标题中提出的问题:
Spring Data JPA 中的 CrudRepository
实现是 SimpleJpaRepository
关于您 post 的 body 中的问题:
public List<User> findByUsername(String username);
不是预先存在的接口的一部分。所以没有直接的实现。相反,一些动态代码通过代理执行。
如果您对查询的实际执行更感兴趣,PartTreeJpaQuery.getExecution()
if you are interested in the construction of the query and AbstractJpaQuery.execute()
是一个很好的调试切入点。