Code subject: @QueryHint annotation to customize the query
Posted: Wed Apr 21, 2010 5:02 pm
Joined: Tue Mar 27, 2007 10:55 pm Posts: 2279 Location: Earth Has thanked: 39 time Have thanks: 61 time
You can use @QueryHint annotation to customize your JPA query ,based on your JPA extension , this annotation parameter will differs. There are two parameter ( name and value ) .
The following code example show you are using "toplink" JPA extension .
@Entity @NamedQueries({ @NamedQuery(name="FinlAllTopics", 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", hints={@QueryHint(name="toplink.refresh", value="true")} )
}
) @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; } }