Java 运行hibernate工具注释生成而不使用;目录;属性
当我运行hibernate工具时 它从数据库中读取数据,并为每个表创建java类, 和用于复合主键的java类。 太好了 问题是这条线Java 运行hibernate工具注释生成而不使用;目录;属性,java,hibernate,code-generation,annotations,Java,Hibernate,Code Generation,Annotations,当我运行hibernate工具时 它从数据库中读取数据,并为每个表创建java类, 和用于复合主键的java类。 太好了 问题是这条线 @Table(name="tst_feature" ,catalog="tstdb" ) 虽然需要表名,但不需要“catalog”属性。 有时我想用“tstdb”,有时我想用“tstdev” 我认为选择哪个数据库取决于jdbc连接url 但当我将JDBCURL更改为指向“tstdev”时,它仍然使用“tstdb” 所以, 我知道必须做什么, 只是不知道
@Table(name="tst_feature"
,catalog="tstdb"
)
虽然需要表名,但不需要“catalog”属性。
有时我想用“tstdb”,有时我想用“tstdev”
我认为选择哪个数据库取决于jdbc连接url
但当我将JDBCURL更改为指向“tstdev”时,它仍然使用“tstdb”
所以,
我知道必须做什么,
只是不知道它是怎么做的
我的选择是
- 禁止生成“目录”属性 目前我正在手动执行此操作(效率不高) 或者我可以编写一个程序来解析java文件并手动删除属性 但我希望我不必这么做
- 找到一种方法告诉hibernate忽略“catalog”属性并使用显式指定的模式。 我不知道要实现这一点我必须更改的确切设置,甚至不知道该选项是否可用
元素),也可以编程方式指定目录(如果我记得很清楚的话,可以在自定义ReverseeEngineeringStrategy类中)
另外,我最近不得不修改生成模板
请参阅参考文档:
- 您可以手动自定义每个表的目录
- 看一部解释很多的电影李>
- 用于自定义模板(我从最接近我需要的目录开始,将所有模板复制到我自己的目录中,然后根据需要进行编辑)
很抱歉,这可能会更精确,但我现在无法访问我的工作计算机。您需要遵循3个步骤- 1) 在
hibernate.cfg.xml
中,添加此属性
hibernate.default_catalog = MyDatabaseName
(如上述职位所述)
2) 在hibernate.reveng.xml
中,像这样添加所有表过滤器
table-filter match-name="MyTableName"
(仅此,此处没有目录名称)
3) 重新生成休眠代码
您将不会在任何*.hbm.xml
文件中看到任何目录名称
我使用了Eclipse Galileo和Hibernate-3.2.4.GA.属性目录是一个“连接”属性,应该在“连接”配置文件
Hibernate.cfg.xml
中指定,而不是在“数据”配置文件*.hbm.xml
中指定
我通过ant任务
生成hibernate代码,并在重新生成后放置此替换任务(用数据库替换模式名称)
因此,生成后,属性目录已被删除
这是一种变通方法,但代码生成在我的开发环境中可以使用不同的模式名工作。table元素从目录中选择表,是的。但那不是我想要的。我希望生成实体时不使用“catalog”属性如果catalog属性存在,那么无论我的jdbc url是什么,它都会指向同一个模式,我希望能够在不重新生成实体的情况下切换模式。我查看了ftl文件,有一行代码是catalog=“${clazz.table.catalog}”知道如何将其设置为false吗?我用hibernate.cfg.xml文件中的xxx解决了这个问题
<replace dir='../src' token='catalog="schema-name"' value=''>