2
我想搜索不唯一的用戶名。我在DAO中實現了下面的代碼,它給出了錯誤HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: EntityManager is closed
。Spring EntityManager已關閉
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void save(Client client) {
entityManager.persist(client);
}
public Client findByUsername(String username) {
Query query = entityManager.createNamedQuery("Client.CheckUsername");
query.setParameter("username", username);
return (Client) query.getSingleResult();
}
查詢:@NamedQuery(name="Client.CheckUsername", query="SELECT c.username FROM Client c WHERE c.username = :username")
服務:
@Autowired
ClientDAO clientDAO;
public Client findClientByUsername(String username){
System.out.println("findclientbyusername: " + username);
return clientDAO.findByUsername(username);
}
public boolean isUsernameUnique(String username) {
Client client = findClientByUsername(username);
System.out.println("isusernameunique?: " + username);
System.out.println(client);
return (client == null || ((username != null) && client.getUsername() == username));
我怎樣才能解決這個問題?
我的猜測是,在返回它之前序列化對象時,你的控制器中有這個錯誤。你可以在調試模式下輸入這個方法執行後的斷點嗎? –
您的'entityManager'實例如何創建? – JonK
我想看看這種方法的服務 –