#java #playframework #ebean
#java #playframework #ebean
Вопрос:
Я следил за игрой! Учебное пособие по созданию блога. Они используют JPA вместо EBEAN и используют функцию find(), которая расширяется из play.db.Jpa.Model . Я использую EBEAN и расширил его с помощью play.db.ebean.Модель. Однако, когда я использую функцию find(), она говорит, что такого метода не существует. Я провел некоторое исследование и посмотрел здесь: http://www.playframework.com/documentation/2.0/api/java/play/db/ebean/Model.html
и вот: http://www.playframework.com/documentation/2.0/api/java/play/db/ebean/Model .Finder.html
но нет упоминания о простом методе find() (есть и другие, такие как FindID(), но я не вижу, как они могут помочь). Есть ли альтернатива, которую я мог бы использовать в классе Model? Если нет, есть ли какие-либо другие классы, которые я мог бы легко использовать?
Редактировать:
Конкретная часть, которую мне нужно создать, — это метод connect() в классе User . В руководстве это описано как:
In the User.java source, add the connect() method:
public static User connect(String email, String password) {
return find("byEmailAndPassword", email, password).first();
}
Какие еще варианты у меня есть для этого, если я не могу использовать find(). Будет ли ebean.find() работать?
Комментарии:
1. Какую версию Play вы используете? Похоже, вы смотрите на это руководство для Play 1.2.x. В Play 2.3.x суперкласса модели JPA больше нет. Об использовании запросов Ebean читайте здесь в разделе «Использование play.db.ebean. Модель суперкласса» для примеров. Для получения дополнительной информации также см. Документы Ebean
2. Да, я использую 2.2.x. Я пытаюсь свободно следовать руководству, но заменяю JPA на EBEAN. Похоже, как я уже сказал, вам нужно использовать find . byId или что-то подобное. Что я могу использовать для той части руководства, о которой вы упомянули, где мне нужна функция find()? Спасибо.
3. Хм, я просматривал ‘Ebean.find’ в документах, которые были связаны. Есть ли какой-нибудь способ, которым я мог бы это использовать? Все примеры предназначены для поиска порядка (?), И я не могу найти много информации в другом месте по ‘bean.find’.
4.
Ebean.find()
предоставляет удобный API для прагматичного построения запросов. Однако, если вы ищете более SQL-подобный подход, вы также можете передать строку запроса. Посмотрите на последние два примера в этом документе для примеров обоих. Если вы добавите к своему вопросу более конкретно, что вы хотите сделать, я мог бы помочь вам с примерами и т. Д.5. Я добавляю конкретный случай.
Ответ №1:
Я знаю о двух способах использования метода find() из play.db.ebean.Модель. Первый из них выглядит следующим образом:
User user = Ebean.find(User.class, id);
Второй метод будет примерно таким:
//define a Model.finder class in the User model class
//The first parameter would be the datatype of the id used, which is String in my case
public static Model.Finder<String,User> find = new Model.Finder<String,User>(String.class, User.class);
User user = User.find.byId(id);
Поскольку ваш запрос извлекает данные на основе двух значений, ваш код должен выглядеть примерно так:
User.find.where()
.eq("email", email).eq("password",password)
.findUnique();