gpt4 book ai didi

hibernate - 如何配置 hbm2java 和 hbm2dao 将包名添加到生成的类中

转载 作者:行者123 更新时间:2023-12-02 23:51:24 32 4
gpt4 key购买 nike

我正在尝试使用 maven 配置 hbm2java 来生成 POJO 类和 DAO 对象。我正在处理的问题之一是未生成包名称。我为此使用以下 pom:

<execution>
<id>hbm2java</id>
<phase>generate-sources</phase>
<goals>
<goal>hbm2java</goal>
</goals>
<inherited>false</inherited>
<configuration>
<components>
<component>
<name>hbm2java</name>
<implementation>configuration</implementation>
</component>
</components>
<componentProperties>
<packagename>package.name</packagename>
<configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile>
</componentProperties>
</configuration>
</execution>

但是生成的代码以以下内容开头:

// default package
// Generated 2010-05-17 13:11:51 by Hibernate Tools 3.2.2.GA

/**
* Messages generated by hbm2java
*/
public class Messages implements java.io.Serializable {

有没有办法强制maven生成package中定义的package部分?

更新:

这是我的 hibernate.cfg.xml,也是由 hibernate-tools (hbm2cfgxml) 自动生成的:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/db</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<mapping resource="package/name/Messages.hbm.xml" />
</session-factory>
</hibernate-configuration>

最佳答案

为了以防万一,这里是 hibernate3-maven-plugin 的自下而上方法的工作配置:

  <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>generate-xml-files</id>
<phase>generate-resources</phase>
<goals>
<goal>hbm2hbmxml</goal>
<goal>hbm2cfgxml</goal>
</goals>
</execution>
<execution>
<id>generate-entities</id>
<phase>generate-sources</phase>
<goals>
<goal>hbm2java</goal>
</goals>
</execution>
</executions>
<configuration>
<components>
<component>
<name>hbm2hbmxml</name>
<implementation>jdbcconfiguration</implementation>
<outputDirectory>target/classes</outputDirectory>
</component>
<component>
<name>hbm2cfgxml</name>
<implementation>jdbcconfiguration</implementation>
<outputDirectory>target/classes</outputDirectory>
</component>
<component>
<name>hbm2java</name>
<implementation>configuration</implementation>
<outputDirectory>target/generated-sources/hibernate3</outputDirectory>
</component>
</components>
<componentProperties>
<propertyfile>src/main/resources/database.properties</propertyfile>
<jdk5>true</jdk5>
<ejb3>false</ejb3>
<packagename>com.mycompany.myapp</packagename>
<format>true</format>
<haltonerror>true</haltonerror>
</componentProperties>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.5.3.0_1</version>
</dependency>
</dependencies>
</plugin>

这是我的src/main/database.properties的内容文件:

hibernate.connection.driver_class=org.apache.derby.jdbc.EmbeddedDriver
hibernate.connection.url=jdbc:derby:./derbyDBs/EMPLDB
hibernate.connection.username=APP
hibernate.connection.password=APP
hibernate.dialect=org.hibernate.dialect.DerbyDialect

#workaround for http://opensource.atlassian.com/projects/hibernate/browse/HBX-1145
hibernate.connection.autocommit=true

此设置:

  1. 生成*.hbm.xmltarget/classes (随包)generate-resources期间.
  2. 生成 hibernate.cfg.xmltarget/classes包含映射文件的条目。
  3. 根据 target/generated-sources/hibernate3 中的映射生成实体(我建议遵循生成源的 target/generated-sources/<tool> 约定,以便 IDE 自动检测到它们)。

这是 clean compile 的结果针对具有两个表的示例数据库:

$ mvn clean compile...$ tree target/target/├── classes│   ├── com│   │   └── mycompany│   │       └── myapp│   │           ├── Department.class│   │           ├── Department.hbm.xml│   │           ├── Employee.class│   │           └── Employee.hbm.xml│   ├── database.properties│   └── hibernate.cfg.xml└── generated-sources    └── hibernate3        └── com            └── mycompany                └── myapp                    ├── Department.java                    └── Employee.java

关于hibernate - 如何配置 hbm2java 和 hbm2dao 将包名添加到生成的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848567/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com