JPANativeSQLBookDAO.java
package ejava.examples.daoex.dao;
import java.lang.reflect.Field;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import ejava.examples.daoex.bo.Book;
public class JPANativeSQLBookDAO implements BookDAO {
private EntityManager em;
public void setEntityManager(EntityManager em) {
this.em = em;
}
@Override
public Book create(Book book) throws PersistenceException {
em.createNativeQuery(
"insert into JPADAO_BOOK (ID, DESCRIPTION, PAGES, TITLE) " +
"values (null, ?1, ?2, ?3)")
.setParameter(1, book.getDescription())
.setParameter(2, book.getPages())
.setParameter(3, book.getTitle())
.executeUpdate();
int idVal = ((Number)em.createNativeQuery("call identity()")
.getSingleResult()).intValue();
try {
Field id = Book.class.getDeclaredField("id");
id.setAccessible(true);
id.set(book, idVal);
} catch (Exception ex) {
throw new RuntimeException("Error setting id", ex);
}
return book;
}
@Override
public Book update(Book book) throws PersistenceException {
// TODO Auto-generated method stub
return null;
}
@Override
public Book get(long id) throws PersistenceException {
// TODO Auto-generated method stub
return null;
}
@Override
public void remove(Book book) throws PersistenceException {
// TODO Auto-generated method stub
}
@Override
public List<Book> findAll(int start, int count) throws PersistenceException {
// TODO Auto-generated method stub
return null;
}
}