代码之家  ›  专栏  ›  技术社区  ›  Titi Wangsa bin Damhore

运行没有“catalog”属性的休眠工具注释生成

  •  7
  • Titi Wangsa bin Damhore  · 技术社区  · 15 年前

    当我运行休眠工具时 它从数据库中读取并为每个表创建Java类, 以及一个用于组合主键的Java类。 那太好了。

    问题是这条线

    @Table(name="tst_feature"
        ,catalog="tstdb"
    )
    

    虽然需要表名,但不需要“catalog”属性。 有时我想用“tstdb”,有时我想用“tstdev”

    我认为选择哪个数据库取决于JDBC连接URL 但当我将JDBC URL更改为指向“tstdev”时,它仍在使用“tstdb”

    所以, 我知道该怎么做, 只是不知道怎么做 我的选择是

    • 禁止生成“catalog”属性 目前我是手工做的(不是很有效) 或者我可以编写一个程序来解析Java文件并手动删除属性。 但我希望我不必

    • 找到一种方法告诉Hibernate忽略“catalog”属性并使用显式指定的模式。 我不知道要实现这一目标必须改变什么样的设置,或者即使选项是可用的。
    3 回复  |  直到 6 年前
        1
  •  7
  •   Rao CrashOverload    7 年前

    你需要遵循3个步骤-

    1)在 hibernate.cfg.xml ,添加此属性

    hibernate.default_catalog = MyDatabaseName
    

    (如上所述)

    2)在 hibernate.reveng.xml ,添加这样的所有表筛选器

    table-filter match-name="MyTableName"
    

    (就这个,这里没有目录名)

    3)重新生成休眠代码

    您将不会在 *.hbm.xml 文件夹。

    我使用过EclipseGalileo和Hibernate-3.2.4.ga。

        2
  •  1
  •   Lucas Zamboulis Princewill Obinna Iwuorie    10 年前

    有一个对生成的自定义,它将告诉要放入哪个目录中的表。

    您可以手动指定目录(在Reveng文件中, <table> 元素),或者以编程方式(如果我记得很好的话,在您的自定义ReverseEngineeringStrategy类中)。

    另外,我最近还不得不修改生成模板。

    参见参考文件:

    抱歉,这可能会更精确,但我现在无法访问我的工作计算机。

        3
  •  0
  •   sth ACP    13 年前

    属性目录是一个“connection”属性,应该在“connection”配置文件中指定。 hibernate.cfg.xml 不在“数据”配置文件中 *.hbm.xml .

    我通过Ant任务生成休眠代码 <hibernatetool> 我把这个替换任务放在重新生成之后(用数据库替换模式名)。

    <replace dir='../src' token='catalog="schema-name"' value=''>
    

    因此,在生成之后,属性目录被删除。

    这是一个解决方法,但是代码生成在我的开发中是有效的,一个具有不同模式名称的生产环境。