Bạn có thể gọi một thủ tục được lưu trữ bằng javax.persistence.StoredProcedureQuery. Bạn thậm chí không cần phải khai báo bất kỳ điều gì trên thực thể của mình.
Tôi khuyên bạn nên chuyển quy trình gọi logic sang một dịch vụ và sau đó gọi phương thức dịch vụ từ bộ điều khiển của bạn.
Ví dụ:
@Service
public class LoginServiceImpl implements LoginService {
@PersistenceContext
private EntityManager entityManager;
public Boolean checkUsernameAndPassword(String username, String password) {
//"login" this is the name of your procedure
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("login");
//Declare the parameters in the same order
query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(3, Integer.class, ParameterMode.OUT);
query.registerStoredProcedureParameter(4, String.class, ParameterMode.OUT);
//Pass the parameter values
query.setParameter(1, username);
query.setParameter(2, password);
//Execute query
query.execute();
//Get output parameters
Integer outCode = (Integer) query.getOutputParameterValue(3);
String outMessage = (String) query.getOutputParameterValue(4);
return true; //enter your condition
}
}
Và sau đó, bạn có thể gọi phương thức này từ Bộ điều khiển của mình, sau khi nhập LoginService
của bạn .