HibernateToolTask(hbm2hbmxml)不';t从@org.hibernate.annotations.index annotations在hibernate映射中生成索引

HibernateToolTask(hbm2hbmxml)不';t从@org.hibernate.annotations.index annotations在hibernate映射中生成索引,hibernate,hibernate-mapping,hibernate-annotations,hibernate-tools,database-indexes,Hibernate,Hibernate Mapping,Hibernate Annotations,Hibernate Tools,Database Indexes,我正在尝试使用hibernate注释从POJO生成hibernate映射。 然后我想使用liquibase生成数据库模式。 所以我需要在POJO中定义索引 POJO示例: @Entity public class A { @Id @GeneratedValue private Long id; @Index(name = "IDX_NAME") @ForeignKey(name="sd") private String name; } 但当我

我正在尝试使用hibernate注释从POJO生成hibernate映射。 然后我想使用liquibase生成数据库模式。 所以我需要在POJO中定义索引

POJO示例:

@Entity
public class A {

    @Id
    @GeneratedValue
    private Long id;

    @Index(name = "IDX_NAME")
    @ForeignKey(name="sd")
    private String name;
}
但当我在ant中运行HibernateToolTask时:

<hibernateTool>
    <classpath>
        <path location="${path}"/>
    </classpath>
    <annotationconfiguration configurationfile="src/hibernate.cfg.xml"/>
        <hbm2hbmxml destdir="${project.dir}"/>
        <hbm2ddl destdir="database/liquibase" export="false" outputfilename="update_${stamp}.sql" />
</hibernateTool>
如何使hibernate在映射中生成索引

更新:

我发现,liquibase使用注释来生成模式,所以这部分问题得到了解决。我还有一个:

我想将现有数据库反向工程到POJO。POJO是从映射生成的,映射(使用jdbcannotation-hbm2hbmxml生成)没有任何索引。 我相信这本质上是同一个问题:hbm2hbmxml不生成索引

更新2:

为什么我需要这个? 我有一个现有的数据库模式。我曾经改变它,然后对POJOs进行反向工程。 现在我想使用POJO并通过注释生成映射和模式

所以我想让POJO匹配当前的数据库模式以继续使用它们。很明显,除了外键名和索引外,所有内容都是匹配的。但是hbm2java不生成@Index注释,例如

<hibernateTool>
    <jdbcconfiguration propertyfile="${build.dir}/etc/hibernate.properties" packagename="${doPackageName}"/>
    <hbm2java destdir="${destinationDir}" jdk5="true" ejb3="true"/>
    <hbm2ddl destdir="${destinationDir}" export="false" outputfilename="update_${stamp}.sql" />
</hibernateTool>

此任务在ddl中生成索引,而不在POJO中生成索引

HibernateToolTask(hbm2hbmxml)不会从@o.h.a.index注释在hibernate映射中生成索引

意图不明确,但这可能无法实现。从文件中:

生成一组.hbm 文件夹。打算一起使用 带着 执行逆向工程,但是 可与任何类型的 配置e、 g.从 基于注释的到hbm.xml的pojo

并非所有可能的映射转换都是可能的/实现的(欢迎投稿),因此可能需要一些手动编辑。

捐款(欢迎:)

我想将现有数据库反向工程到POJO。POJO是从映射生成的,映射(使用jdbcannotation-hbm2hbmxml生成)没有任何索引。我相信这本质上是同一个问题:hbm2hbmxml不生成索引


您不必为此生成映射,您可以使用从数据库生成EJB3注释的POJO。也许你应该解释一下你到底想做什么。

我在原始的帖子中添加了一些关于我想做什么的解释,但是既然你已经有了注释,为什么还要使用xml映射呢?我真的不明白这一点,这看起来很麻烦。我现在需要的是带有@Index注释的POJO。我只是认为在映射中生成索引是完全相同的任务(我可能希望使用中间出方法并从映射开始)。
create table A (id bigint not null auto_increment, name varchar(255), primary key (id)) type=InnoDB;
create index IDX_NAME on A (name);
<hibernateTool>
    <jdbcconfiguration propertyfile="${build.dir}/etc/hibernate.properties" packagename="${doPackageName}"/>
    <hbm2java destdir="${destinationDir}" jdk5="true" ejb3="true"/>
    <hbm2ddl destdir="${destinationDir}" export="false" outputfilename="update_${stamp}.sql" />
</hibernateTool>