首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HibernateToolTask (hbm2hbmxml)不会在hibernate中根据@org.hibernate.annotations.Index注释生成索引

HibernateToolTask (hbm2hbmxml)不会在hibernate中根据@org.hibernate.annotations.Index注释生成索引
EN

Stack Overflow用户
提问于 2010-08-23 15:35:54
回答 1查看 1.8K关注 0票数 2

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

样本POJO:

代码语言:javascript
复制
@Entity
public class A {

    @Id
    @GeneratedValue
    private Long id;

    @Index(name = "IDX_NAME")
    @ForeignKey(name="sd")
    private String name;
}

但是当我在ant中运行HibernateToolTask时:

代码语言:javascript
复制
<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>

在映射中我没有任何索引:

代码语言:javascript
复制
<class name="A" table="A">
    <id name="id" type="java.lang.Long" access="field">
        <column name="id" />
        <generator class="native"></generator>
    </id>
    <property name="name" type="java.lang.String" access="field">
        <column name="name" />
    </property>
</class>

同时,当我执行hbm2ddl时--生成“创建索引”:

代码语言:javascript
复制
create table A (id bigint not null auto_increment, name varchar(255), primary key (id)) type=InnoDB;
create index IDX_NAME on A (name);

如何使hibernate在映射中生成索引?

更新:

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

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

更新2:

我为什么需要那个?我有一个现有的数据库模式。我以前经常修改它,然后逆向工程POJO。现在,我想使用POJO并通过注释生成映射和模式。

因此,我希望POJO与当前的数据库模式相匹配,以便继续使用它们。显然,除了外键名称和索引之外,所有东西都是匹配的。但是hbm2java不生成@Index注释。

代码语言:javascript
复制
<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中不生成索引。

EN

回答 1

Stack Overflow用户

发布于 2010-08-23 16:04:09

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

其意图尚不明确,但这可能只是没有得到落实。从文件中:

4.4.3. Hibernate Mapping files exporter ()

<hbm2hbmxml>生成一组.hbm文件。用于与执行逆向工程时一起使用,但可用于任何类型的配置。例如,将基于注释的pojo转换为hbm.xml。

并不是所有可能的映射转换都是可能的/实现的(欢迎贡献),因此可能需要进行一些手工编辑。

欢迎捐款:)

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3549107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档