使用HiberNate ant任务从Gradle我能够生成实体类从数据库使用留档在http://docs.jboss.org/tools/latest/en/hibernatetools/html_single/index.html#d0e5102
当我更改模板
和templateprefix
时,HiberNate找不到我的自定义模板。可以肯定的是,我直接从hiberNate jars复制了模板,并在Pojo.ftl.中添加了一个注释
这是我正在使用Hibernate模板的Gradle构建文件。。。在工作构建文件下面是失败的构建文件,除了模板
和模板前缀
之外,该文件是相同的。
apply plugin: 'java'
repositories {
mavenCentral()
}
configurations {
reverseMap
}
dependencies {
reverseMap 'org.hibernate:hibernate-tools:4.0.0-CR1'
reverseMap 'org.slf4j:slf4j-simple:1.7.5'
reverseMap files('/Users/jzwolak/local/lib/ojdbc6-11.2.0.2.0.jar')
compile 'javax:javaee-api:7.0'
}
project.ext {
hibernateRevEngXml = "$projectDir/config/hibernate.reveng.xml"
hibernateDestDir = file("$buildDir/generated")
}
task reverseMap {
inputs.files hibernateRevEngXml
outputs.dir hibernateDestDir
doLast {
hibernateDestDir.exists() || hibernateDestDir.mkdirs()
ant {
taskdef(name: 'hibernatetool',
classname: 'org.hibernate.tool.ant.HibernateToolTask',
classpath: configurations.reverseMap.asPath )
hibernatetool( destdir : hibernateDestDir ) {
jdbcconfiguration(
configurationfile:"$projectDir/config/hibernate.cfg.xml",
revengfile:hibernateRevEngXml,
packagename:
"com.mybiz"
//reversestrategy="ReverseEngineeringStrategy classname"
//detectmanytomany="true|false"
//detectoptmisticlock="true|false"
)
hbmtemplate(
templateprefix:"pojo/" ,
template:"pojo/Pojo.ftl",
filepattern:"{package-name}/{class-name}.java"
) {
property(key:"jdk5",value:"true")
property(key:"ejb3",value:"true")
}
/*
hbm2java(
jdk5: true,
ejb3: true
)
*/
// Adds the config directory to the path so that log4j can pick up
// its properties file.
classpath {
pathelement( path: "config" )
}
}
}
}
}
compileJava.source reverseMap.outputs.files, sourceSets.main.java
这是失败的构建文件。
apply plugin: 'java'
repositories {
mavenCentral()
}
configurations {
reverseMap
}
dependencies {
reverseMap 'org.hibernate:hibernate-tools:4.0.0-CR1'
reverseMap 'org.slf4j:slf4j-simple:1.7.5'
reverseMap files('/Users/jzwolak/local/lib/ojdbc6-11.2.0.2.0.jar')
compile 'javax:javaee-api:7.0'
}
project.ext {
hibernateRevEngXml = "$projectDir/config/hibernate.reveng.xml"
hibernateDestDir = file("$buildDir/generated")
}
task reverseMap {
inputs.files hibernateRevEngXml
outputs.dir hibernateDestDir
doLast {
hibernateDestDir.exists() || hibernateDestDir.mkdirs()
ant {
taskdef(name: 'hibernatetool',
classname: 'org.hibernate.tool.ant.HibernateToolTask',
classpath: configurations.reverseMap.asPath )
hibernatetool( destdir : hibernateDestDir ) {
jdbcconfiguration(
configurationfile:"$projectDir/config/hibernate.cfg.xml",
revengfile:hibernateRevEngXml,
packagename:
"com.mybiz"
//reversestrategy="ReverseEngineeringStrategy classname"
//detectmanytomany="true|false"
//detectoptmisticlock="true|false"
)
hbmtemplate(
templateprefix:"templates/custom_pojo/" ,
template:"templates/custom_pojo/Pojo.ftl",
filepattern:"{package-name}/{class-name}.java"
) {
property(key:"jdk5",value:"true")
property(key:"ejb3",value:"true")
}
/*
hbm2java(
jdk5: true,
ejb3: true
)
*/
// Adds the config directory to the path so that log4j can pick up
// its properties file.
classpath {
pathelement( path: "config" )
}
}
}
}
}
compileJava.source reverseMap.outputs.files, sourceSets.main.java
这是目录树
build.gradle
config
| hibernate.cfg.xml
| hibernate.reveng.xml
| log4j.properties
templates
| custom_pojo
| | Ejb3PropertyGetAnnotation.ftl
| | Ejb3TypeDeclaration.ftl
| | GetPropertyAnnotation.ftl
| | Pojo.ftl
| | PojoConstructors.ftl
| | PojoEqualsHashcode.ftl
| | PojoExtraClassCode.ftl
| | PojoFields.ftl
| | PojoInterfacePropertyAccessors.ftl
| | PojoPropertyAccessors.ftl
| | PojoToString.ftl
| | PojoTypeDeclaration.ftl
| | test.ftl
这里是错误
[ant:hibernatetool] org.hibernate.tool.hbm2x.ExporterException: Error while processing Entity: com.mybiz.TsModelRealizationView with template templates/custom_pojo/Pojo.ftl
[ant:hibernatetool] java.io.FileNotFoundException: Template templates/custom_pojo/Pojo.ftl not found.
:reverseMap FAILED
我已经尝试添加.
和模板
到类路径,以及config
,它已经在类路径中并且正在工作。
我已经尝试了很多组合,用于template
和templateprefix
,但唯一有效的组合是第一次构建中的组合。上面是格雷德尔档案。
更新
我尝试了templateprefix
和template
的绝对路径,得到了相同的文件not found错误。
虽然有点晚,但如果仍然有帮助的话,这是另一种指定模板基本路径的方法:
改变这一点:
hibernatetool( destdir : hibernateDestDir )
致:
hibernatetool( destdir : hibernateDestDir, templatepath : 'templates' )
模板部分应该是:
templateprefix:"custom_pojo/" ,
template:"custom_pojo/Pojo.ftl",
添加
reverseMap files('.')
你的依赖。
我正在Eclipse Neon中使用Hibernate工具(JBoss tools 4.4.0.Final)。现在,我想将数据库表反向工程为POJO对象和Hibernate映射文件。 我遵循了一些关于如何设置Eclipse来生成POJO对象的教程。在我运行配置之前,一切看起来都很好。什么都没发生,也没有抛出错误。有人能帮我吗?数据库是一个微软SQL服务器2014。 我的逆向工程配置文件看起来像:
我想使用Hibernate和Gradle从现有数据库生成POJO。Gradle可以轻松调用Ant任务,Hibernate为逆向工程数据库提供了Ant任务。 我在网上找到了这个旧的Gradle任务定义,并将其修改为最新版本的Gradle,但它不起作用: 我得到了一个错误: 我如何修改它以从数据库生成模式文件?(我知道这还不会生成POJO,但这是第一步!) 我的依赖项看起来像:
逆向工程 是模型其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入 MySQL、 PostgreSQL、Oracle、SQLite、SQL Server 或 MariaDB 数据库、模式、表或视图。 Navicat 提供一个步骤的向导让你完成任务: 选择 工具 -> 从数据库导入。 选择连接。 选择你要导入的数据库、模式或表。 点击 开始。 你也可以简单地在 Navicat
逆向工程是模型的其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入数据库、模式、表或视图。 Navicat 提供一个向导,一步一步指导你完成任务: 选择“文件”->“从数据库导入”。 选择一个连接。 选择你要导入的数据库、模式、表或视图。 点击“开始”。 你也可以简单地在 Navicat 主窗口使用逆向工程创建一个新模型。右击一个已打开的数据库或模式、表或视图并在弹出式菜单
逆向工程是模型的其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入数据库、模式、表或视图。 Navicat 提供一个向导,一步一步指导你完成任务: 选择“文件”->“从数据库导入”。 选择一个连接。 选择你要导入的数据库、模式、表或视图。 点击“开始”。 你也可以简单地在 Navicat 主窗口使用逆向工程创建一个新模型。按住 Control 键并点按一个已打开的数据库或模
逆向工程是模型的其中一个主要功能。这功能让你加载现有的数据库结构以创建新的图表。它支持导入数据库、模式、表或视图。 Navicat 提供一个向导,一步一步指导你完成任务: 选择“文件”->“从数据库导入”。 选择一个连接。 选择你要导入的数据库、模式、表或视图。 点击“开始”。 你也可以简单地在 Navicat 主窗口使用逆向工程创建一个新模型。右击一个已打开的数据库或模式、表或视图并在弹出式菜单