我正在尝试实现一个使用开放式JPA访问数据层的Web服务。我正在使用websphere v7.0和JPA 2.0。这项服务将从一个小的数据库中获取所有行(大约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或类似的东西进行选择。任何建议都会很棒。
答案 0 :(得分:18)
您可以使用NamedQuery
@NamedQueries({
@NamedQuery(name="EmailDomainTrust.getEmailDomains",
query="SELECT e FROM EmailDomainTrust e")
})
会话bean中的:
return em.createNamedQuery("EmailDomainTrust.getEmailDomains", EmailDomainTrust.class).getResultList();
答案 1 :(得分:15)
通过内联查询
List<EmailDomainTrust> ListOfEmailDomains = entityManager.createQuery("SELECT e FROM EmailDomainTrust e").getResultList();
通过命名查询(Andrey and mprabhat)
您可以使用
NamedQuery
会话bean中的@NamedQueries({ @NamedQuery(name="EmailDomainTrust.getEmailDomains", query="SELECT e FROM EmailDomainTrust e") })
:
return em.createNamedQuery("EmailDomainTrust.getEmailDomains", EmailDomainTrust.class).getResultList();
使用查询API(从Criteria Query API收集)
CriteriaQuery<EmailDomainTrust> criteria = em.getCriteriaBuilder().createQuery(EmailDomainTrust.class);
criteria.select(criteria.from(EmailDomainTrust.class));
List<EmailDomainTrust> ListOfEmailDomains = em.createQuery(criteria).getResultList();
return ListOfEmailDomains;