Switch to full style
Java persistent API
Post a reply

Named Native Query

Wed Apr 21, 2010 5:27 pm

Using named native query , you can write simple SQL queries and run it on your JPA model . You may need to do this in cases when you need a specific database query that you can't do with EJB-QL . Sometimes for performance issues .

You can add native query using @NamedNativeQuery annotation .

Code:

package com
.codemiles.jpa;
import java.util.Collection;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedNativeQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;



@
Entity
@Table(name="TOPIC")
@
NamedNativeQuery(name = "nativeTopicByDate", query = "SELECT topic.TITLE, topic.CREATION_DATE FROM TOPIC topic " +
        "WHERE topic.MODIFED_DATE=?", resultClass = Topic.class)
    

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;
    }
}
 


Code:

package com
.codemiles.jpa;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 * @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();
     
Date date = new Date(System.currentTimeMillis());
    List<
Topic> list = loadTopicByDatedate);
    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();

    }

 
 
    
/**
     * Using native query .
     * @param date
     *   date of the creation .
     * @return
     *  List of topics retrieved 
     */
    
public  List<TopicloadTopicByDate(Date date) {
    
Query query entityManager.createNativeQuery("nativeTopicByDate");
    
query.setParameter(1date);
 
    List<
TopictopicList query.getResultList();
    return 
topicList;
    }

}

 




Post a reply
  Related Posts  to : Named Native Query
 Delete using native query     -  
 Insert using native query     -  
 create named query     -  
 create a named query within entity class     -  
 What is a native method     -  
 How are Java source code files named     -  
 EJB-QL IN where query     -  
 select query example in php     -  
 more than one parameter with name query     -  
 SQL LIKE query Command     -  

Topic Tags

Java JPA