Hibernate: como regresar un sólo valor que sea un tipo primitivo?
Base de datos, Java, Oracle, Programación 21 de August del 2009
Es un poco básico pero la verdad es que es de gran ayuda, ya que si quieres regresar un date, string, long, etc. (datso primitivos) pues evitas mapear el resultado dentro de un objeto.
bueno, al grano!!! vamos a obtener el nombre del autor dependiendo del su ID
tautor.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <sql-query name="searchAutor"> <return-scalar column="name" type="java.lang.String" /> <!-- La columna que se quiera regresar y su tipo de dato--> SELECT name FROM tautor WHERE idautor = :id </sql-query> </hibernate-mapping> |
ya que tenemos el mapeo… vamos a la implementación
HTautorDao.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class HTautorDao extends AbstractDAO implements TautorDao { public String getNameAutor(Long id) { try { String[] paramNames = { "id" }; Object[] values = { id }; // nos regresa el tipo primitivo que queramos o con metodos que tiene DataAccessUtils return (String) DataAccessUtils.uniqueResult((getHibernateTemplate() .findByNamedQueryAndNamedParam("searchAutor", paramNames, values))); } catch (Exception e) { log.fatal(e); return null; } } |
así pueden tener las consultas utilizando hibernate… y regresar tipos primitivos como los antes mencionados..
NOTA: siempre y cuando sea sólo valor como resultado, por que de lo contrario estamos ablando de otra forma de hacerlo.
java doc: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/dao/support/DataAccessUtils.html#uniqueResult

(2 votes, average: 4.50 out of 5)
Sobre mí






