Playframework: [RuntimeException: java.lang.reflect.InvocationTargetException]

Próbuję utworzyć proste logowanie oparte na próbce Zentask -zentask - playframeworkjednak po kliknięciu przycisku logowania, który wywołuje akcje Application.authenticate, daje wyjątek czasu wykonywania. Zaznaczyłem linię za pomocą - błędu

[RuntimeException: java.lang.reflect.InvocationTargetException]

Application.java

public class Application extends Controller {

.........

public static class Login 
{
    public String email;
    public String password;

    public String validate() 
    {
        if (User.authenticate(email, password) == null) {
          return "Invalid user or password";
        }
        return null;
    }
}

   public static Result authenticate() 
    {
        Form<Login> loginForm = form(Login.class).bindFromRequest();  //--- error
        if(loginForm.hasErrors()) {
            return badRequest(login.render(loginForm));
        } else {
            session("email", loginForm.get().email);
            return redirect(
                routes.Application.index()
            );
        }
    }
}

Rozumiem, że ma to coś wspólnego z funkcją sprawdzania poprawności w klasie logowania, ponieważ po usunięciu wywołania User.authenticate w funkcji sprawdzania poprawności działa bez błędu. Ale nie jestem w stanie tego zrozumieć.

Klasa użytkownika to -

@Entity
public class User extends Model
{
    @Id
    @Constraints.Required
    @Formats.NonEmpty
    public String userId;

    @OneToOne(cascade=CascadeType.PERSIST)
    AccountDetails accDetails;


    public static Model.Finder<String,User> find = new Model.Finder<String,User>(String.class, User.class);



    // Authenticate the user details
    public static User authenticate(String email, String password) 
    {
        String tempId = AccountDetails.authenticate(email, password).userId;

        return find.ref(tempId);
    }

    .. . . . . . .

}

i klasa AccountDetails -

@Entity
public class AccountDetails extends Model
{
    @Id
    String userId;

    @Constraints.Required
    String emailId;

    @Constraints.Required
    String password;

    public static Model.Finder<String,AccountDetails> find = 
            new Model.Finder<String,AccountDetails>(String.class, AccountDetails.class);


    public static AccountDetails authenticate(String email, String password) 
    {       
        return find.where()
            .eq("email", email)
            .eq("password", password)
            .findUnique();
    }

}

questionAnswers(1)

yourAnswerToTheQuestion