Warum berücksichtigt die hbm2ddl-Generierung von Hibernate Tools die Bean-Validierungsanmerkungen nicht?

Zusammenfassung: Ich verwende Hibernate Tools 4.0.0-CR1 und Hibernate 4.2 (einschließlich Hibernate Validator), aber Bean Validations werden nicht übernommen. Das Schemaist Wird beim Deployment mit korrekt generierthibernate.hbm2ddl.auto=create-drop.

Ich ziehe es jedoch vor, meine DDL über das folgende build.xml-Ziel zu generieren:

<target name="schemaexport" depends="jar" description="Exports a generated schema to DB and files">
    <path id="lib.path">
        <fileset refid="lib" />
        <pathelement location="${jboss.home}/modules/org/apache/xerces/main/xercesImpl-2.9.1-jbossas-1.jar"/>
        <pathelement location="${jar.dir}" />
    </path>

    <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"
             classpathref="lib.path"/>

    <hibernatetool destdir="${basedir}">
        <classpath refid="lib.path"/>
        <jpaconfiguration persistenceunit="TIC" propertyfile="hibernate-console.properties" />
        <hbm2ddl outputfilename="${dist.dir}/db_ddl.sql" format="true"/>
    </hibernatetool>

    <concat destfile="${dist.dir}/tic.sql" fixlastline="yes">
        <filelist dir="${dist.dir}" files="db_ddl.sql" />
        <filelist dir="${jar.dir}" files="import.sql" />
    </concat>
</target>

Meine hibernate-console.properties sind wie folgt:

hibernate.connection.password=tic
hibernate.connection.username=tic
hibernate.connection.driver_class=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.url=jdbc:postgresql://127.0.0.1:5432/db

hibernate.connection.provider_class=org.hibernate.connection.DriverManagerConnectionProvider
hibernate.datasource=
hibernate.transaction.manager_lookup_class=

Ich habe zweimal überprüft, ob die Gläser in meinem lib.path sind ...

Eine Beispielentität sieht folgendermaßen aus:

@Entity
public class Title implements Serializable {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Size(max = 50) @NotEmpty @Column(length = 50)
    private String titlename;

    @Size(max = 50)
    private String shortTitle;
}

Das Problem hier ist, dass hbm2ddl ein richtiges "varchar (50)" für "titlename" generiert, aber ein generisches "varchar (255)" für "shortTitle". Bei @NotNull und im Grunde bei jeder anderen Bean-Validierungsanmerkung sind ähnliche Probleme aufgetreten. Gemäßdas Handbuch das sollte einfach funktionieren. Was mache ich falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage