Code subject: more than one parameter with name query
Posted: Tue Apr 20, 2010 8:23 pm
Joined: Tue Mar 27, 2007 10:55 pm Posts: 2279 Location: Earth Has thanked: 39 time Have thanks: 61 time
Following example show the case when using more than one parameter with your defined named query . The named query here is defined inside the entity class . Each named query has a name which is unique all over your JPA model .
@Entity @NamedQueries({ @NamedQuery(name="FindAllTopics", query="SELECT t FROM Topic t"), @NamedQuery(name="FindTopicByTitle", query="SELECT t FROM Topic t WHERE t.title = :title") , @NamedQuery(name="FindTopicByTitleAndDate", query="SELECT t FROM Topic t WHERE t.title = :title and t.creationDate=:creationDate")}) @Table(name="TOPIC") public class Topic implements java.io.Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id private int Id; private String title; private Date creationDate; private Date modifedDate; private String content; @OneToMany(mappedBy="topic") private Collection<Comment> comments;
public int getId(){ return Id; } public void setId(int id){ Id = id; } @Column(name="TITLE") public String getTitle(){ return title; } public void setTitle(String title){ this.title = title; } @Column(name="CREATION_DATE") public Date getCreationDate(){ return creationDate; } public void setCreationDate(Date creationDate){ this.creationDate = creationDate; } @Column(name="MODIFED_DATE") public Date getModifedDate(){ return modifedDate; } public void setModifedDate(Date modifedDate){ this.modifedDate = modifedDate; } @Column(name="CONTENT") public String getContent(){ return content; } public void setContent(String content){ this.content = content; } public void setComments(Collection<Comment> comments){ this.comments = comments; } public Collection<Comment> getComments(){ return comments; } }
/** * @author codemiles. * */ public abstract class JPAService { private EntityManager entityManager;
/** * @param args */ public void insertTopic(Topic topic){ EntityManagerFactory factory = Persistence .createEntityManagerFactory("persistenceUnitName"); entityManager = factory.createEntityManager(); entityManager.getTransaction().begin(); String title ="Codemiles"; Date date = new Date(System.currentTimeMillis()); List<Topic> list = loadTopicByTitleAndDate(title, date); if (list != null){ for (Topic currentTopic : list){ System.out.println("Topic id#("+ currentTopic.getId() +" ). Title = "+ currentTopic.getTitle() +" , Content = "+ currentTopic.getContent()); } } entityManager.persist(topic); entityManager.getTransaction().commit(); entityManager.close(); factory.close();
}
/** * @return * List of topics retrieved */ public List<Topic> loadAllTopics(){ List<Topic> resultList = entityManager .createNamedQuery("FinlAllTopics").getResultList();
return resultList; }
/** * @param title * title of the topic . * @return * List of topics retrieved */ public List<Topic> loadTopicByTitle(String title){ Query query = entityManager.createNamedQuery("FindTopicByTitle"); query.setParameter("title", title); List<Topic> topicList = query.getResultList(); return topicList; }
/** * @param title * title of the topic . * @param date * date of the creation . * @return * List of topics retrieved */ public List<Topic> loadTopicByTitleAndDate(String title, Date date){ Query query = entityManager.createNamedQuery("FindTopicByTitleAndDate"); query.setParameter("title", title); query.setParameter("creationDate", date); List<Topic> topicList = query.getResultList(); return topicList; }
}
_________________ Currenlty programming with : java , html , php , and javascript . (OCJP-6 certified )