Выбор всех строк из базы данных с использованием JPA в WebSphere
Я пытаюсь реализовать веб-службу, которая использует открытый JPA для доступа к слою данных. Я использую websphere v7.0 и JPA 2.0. Эта служба собирается вывести все строки из небольшого db (около 6 строк, и в будущем он не будет сильно расширяться). Я пытаюсь получить все строки и вернуть их через пользователя. Я сейчас создаю сеанс Bean, который будет извлекать данные.
У меня есть несколько объектов JPA, один из которых (представляющий строку всех данных, которые я хочу вернуть) выглядит так...
@Entity
@NamedQueries({
@NamedQuery(name="EmailDomainTrust.getEmailDomains",
query="SELECT DOMAIN_NAME,"+
"DESCRIPTION, CONFIRMED_BY, CONFIRMED_DATE" +
"FROM EMAIL_DOMAIN_TRUST")
})
@Table(name="EMAIL_DOMAIN_TRUST")
public class EmailDomainTrust implements Serializable {
@Id
@Column(name="EMAIL_DOMAIN_TRUST_ID")
private long emailDomainTrustId;
@Column(name="DOMAIN_NAME")
private String domainName;
}
Там гораздо больше, но я не хочу делать это слишком долго. Я просто подумал, что я покажу пару полезных переменных и, возможно, некоторые из них получат множество.
В моей сессии Bean я пытаюсь получить все строки...
public List<EmailDomainTrust> GetEmailDomains(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("");
EntityManager em = emf.createEntityManager();
//EntityTransaction userTransaction = em.getTransaction();
System.out.println("Testing 1..2...3...!");
List<EmailDomainTrust> ListOfEmailDomains = em.find(EmailDomainTrust.class, arg1)
try
{
}
catch(Exception e)
{
}
return null;
}
То, что я до сих пор, определенно не до табака. Но в учебниках онлайн никогда не описывается получение всех строк из таблицы. У меня не будет параметров для этого метода, поэтому я не смогу выбрать на основе ID или что-то в этом роде. Любой совет будет замечательным.
Ответы
Ответ 1
Вы можете использовать NamedQuery
@NamedQueries({
@NamedQuery(name="EmailDomainTrust.getEmailDomains",
query="SELECT e FROM EmailDomainTrust e")
})
в сеансе bean:
return em.createNamedQuery("EmailDomainTrust.getEmailDomains", EmailDomainTrust.class).getResultList();
Ответ 2
По встроенному запросу
List<EmailDomainTrust> ListOfEmailDomains = entityManager.createQuery("SELECT e FROM EmailDomainTrust e").getResultList();
По названию запроса (Андрей и mprabhat)
Вы можете использовать NamedQuery
@NamedQueries({
@NamedQuery(name="EmailDomainTrust.getEmailDomains",
query="SELECT e FROM EmailDomainTrust e")
})
в сеансе bean:
return em.createNamedQuery("EmailDomainTrust.getEmailDomains", EmailDomainTrust.class).getResultList();
С API запроса (почерпнутый из API запросов критериев)
CriteriaQuery<EmailDomainTrust> criteria = em.getCriteriaBuilder().createQuery(EmailDomainTrust.class);
criteria.select(criteria.from(EmailDomainTrust.class));
List<EmailDomainTrust> ListOfEmailDomains = em.createQuery(criteria).getResultList();
return ListOfEmailDomains;