Buscar este blog

viernes, 29 de junio de 2012

Hibernate: error many-to-many

[hibernatetool] An exception occurred while running exporter #2:hbm2java (Generates a set of .java files)
[hibernatetool] To get the full stack trace run ant with -verbose
[hibernatetool] org.hibernate.MappingException: An association from the table TRACK_ARTISTS does not specify the referenced entity


BUILD FAILED
/media/SWAP/ProyectoH/build.xml:67: org.hibernate.MappingException: An association from the table TRACK_ARTISTS does not specify the referenced entity
    at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1241)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1170)

 Este error es causado porque el nombre de la clase esta mal. En el achirvo aparece Artist y debería se com.oreilly.hh.

 
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="Artist">
    <meta attribute="class-description">
        Represent a artist who is associed with a track or album.
        @autor Victor Aguilar
    </meta>
    
    <id name="Id" type="int" column="ARTIST_ID">
        <meta attribute="scope-set">protected</meta>
        <generator class="native"/>
    </id>
    
    <property name="name" type="string" column="NAME">
        <meta attribute="use-in-tostring">true</meta>
    </property>
    
    <set name="track" table="TRACK_ARTISTS" inverse="true">
        <key column="ARTIST_ID"/>
        <many-to-many entity-name="com.oreilly.hh.Track" column="TRACK_ID"/>
    </set>
</class>


  

</hibernate-mapping>

domingo, 24 de junio de 2012

Netbeans: de hbm a java con Ant

Introduccion:

Esta entrada muestra como auto-generar codigo java a partir de documentos de mapeo hbm de Hibernate.

Esto se hara desde el interior de Netbeans, sin embargo funciona unicamente utilizando Ant, ya que modificamos el build.xml y usamos las los .jar  de Hibernate e Hibernate Tool (en particular hbm2java) que son idependientes a NetBeans.


From hbm to java

Una vez con un proyecto creado en NetBeans, entramos en la pestaña Files y abrimos el archivo build.xml (el mismo que en Ant) y agreamos el siguiente codigo justo despues de los comentarios, pero antes de la etiqueta </project>:

<property name="src" value="src"/>
    <property name="hibernate_path" value="/home/lubuntu/.netbeans-7.1.1/java/modules/ext/"/>
    <property name="apache_path" value="/home/lubuntu/.netbeans-7.1.1/ide/modules/"/>
    
    <path id="classes-path">
        <fileset dir="${hibernate_path}" includes="**/*.jar"/>
        <fileset dir="${apache_path}" includes="**/*.jar"/>
    </path>
    
    <taskdef name="htool"
            classname="org.hibernate.tool.ant.HibernateToolTask"
            classpathref="classes-path"/>
     
     <target name="gencode">
         <htool destdir="${src}">
             <configuration
                 configurationfile="${src}/hibernate.cfg.xml">
                <fileset dir="${src}/dvdshop" includes="*.hbm.xml"/>
              </configuration>
             <hbm2java jdk5="true"/>
         </htool>
     </target>

El código anterior solamente agrega una nueva tarea al script de Ant y lo unico que tienes que modificar es el atributo value de las etiquetas <property>'s con la direccion correcta de donde se encuentran los .jar de Hibernate y los de apache. Estos utilimos por lo general biene dentro del bundle de Hibernate.

Con estas modificaciones solo hay que darle click secundario al archivo build.xml, elegir Run Target -> Other Targets -> gencode. Entonces nos generara un los archivos .java.

Bibliografia

[1] Dave Minter, Jeff Linwood, Beginning Hibernate: From Novice to Profesional, Appress, Agosto 2006.
[2] Jame Helliott, Hibernate: A Developer's Notebook, O'reilly 2004.
[3] Hibernate Reference 24 de Junio del 2012.
[4] Apache Commons 24 de Junio del 2012.

miércoles, 13 de junio de 2012

Insertar codigo coloreado en blogger

Esta pagina http://tohtml.com/xml/ te genera codigo HTML para insertarlo en blogger.com. Una caracteristica interesante es que te detecta errores de sintaxis.

jueves, 7 de junio de 2012

Insertar imagenes jpg en LaTeX


Para insertar una imagen en LaTeX utilizamos el siguiente codigo.


\documentclass{article}
\usepackage{graphicx}

\begin{document}

\begin{figure}[h]
        \includegraphics[
             width = 10cm,
             bb = 0 0 1280 736
        ]{dead.jpg}
\end{figure}

\end{document}


La unica linea que no es auto-documentable y por lo cual necesita una explicación es la linea en negritas. La opción bb (BoundingBox) es imprescindible para insertar la imagen, ya que si la eliminamos el compilador (yo uso texlive en Lubuntu) nos arrojara el siguente error:


! LaTeX Error: Cannot determine size of graphic in dead.jpg (no BoundingBox).


Los dos primeros numeros (los dos ceros) indican la posición de la esquina inferior izquierda. Mientras que los otros dos indican la posicion de la esquina superior derecha.  Exactamente como funciona esto no lo se, tendre que búscarlo en un libro de LaTeX y no en internet. Pero lo que si se, es que si ponemos las dimenciones de la imagen (ancho por alto) como la esquina superir derecha tendremos una imagne del acho especificado en width.

También es importante que el nombre del archivo no tenga espacios en blanco de lo contrario el compilador no encontrara la imagen. Cabe mencionar que esta puede estar en otro directorio. Si es así se debe especificar la ruta absoluta o relativa como en HTML o cualquier otro lenguaje.