Выбор всех строк из базы данных с использованием 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;