1

我正在使用Minuteproject生成我的 JPA2 实体。

我通过运行 .start-console.sh 来使用 GUI。并输入我所有的数据库连接和包详细信息。
在此处输入图像描述

它生成我所有的类,但每个类包如下。

package com.fantasy.entities.defautmodel.domain.defautmodel;

我想要以下。

package com.fantasy.entities;

关于如何改变这一点的任何想法?

4

2 回答 2

1

看起来这个页面解释: http: //minuteproject.wikispaces.com/JPA2SmartRE

我将其设置为以下内容:

com.fantasy.domain.entities

使用此配置文件:

<!DOCTYPE root>
<generator-config xmlns="http://minuteproject.sf.net/xsd/mp-config"
    xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    xs:noNamespaceSchemaLocation="mp-config.xsd">
    <configuration>
        <model name="fantasy" version="1.0" package-root="com">
            <data-model>
                <dataSource>
                    <driverClassName>org.gjt.mm.mysql.Driver</driverClassName>
                    <url>jdbc:mysql://127.0.0.1:3306/fantasy</url>
                    <username>root</username>
                    <password></password>
                </dataSource> 
                <primaryKeyPolicy oneGlobal="true" oneForEachTable="false">
                    <primaryKeyPolicyPattern prefix="" suffix="" name="sequencePattern" sequenceName="hibernate_sequence"></primaryKeyPolicyPattern>
                </primaryKeyPolicy>
            </data-model>
            <business-model>
                <generation-condition>
                    <condition type="exclude" startsWith="DUAL"></condition>
                    <condition type="exclude" startsWith="ID_GEN"></condition>
                </generation-condition>
                <business-package default="entities">
                     <condition type="package" startsWith="*" result="entities"></condition>
                </business-package>
                <enrichment>
                    <conventions>
                        <entity-naming-convention type="apply-strip-table-name-prefix" pattern-to-strip="SYS,FIN"/>
                        <column-naming-convention type="apply-fix-primary-key-column-name-when-no-ambiguity" default-value="ID"/>
                        <reference-naming-convention type="apply-referenced-alias-when-no-ambiguity" is-to-plurialize="true"></reference-naming-convention>
                    </conventions>

                     <package name="entities">
                     <entity-group entities="*"></entity-group>
                     </package>
                </enrichment>
            </business-model>
            <statement-model>
            </statement-model>
        </model>
        <targets catalog-entry="JPA2" />
    </configuration>
</generator-config>

我根本不知道如何删除“域”部分!文档相当差。

我将只运行一个 perl reg exp 来更新我的所有班级,如下所示:

perl -e 's/com.fantasy.domain/com.fantasy/g;' -pi $(find . -type f)
于 2013-11-02T19:24:06.633 回答
0

每个分钟项目人工制品都有一些与之关联的元数据。在 JPA2 人工制品的情况下,名称是“DomainEntityJPA2Annotation”。元数据定义可在 mp-template-config-JPA2.xml 中找到。

        <template name="DomainEntityJPA2Annotation" templateFileName="DomainEntityJPA2Annotation.vm" 
        subdir="" outputsubdir="" technicalPackage="domain" ...

元数据属性“technicalPackage”处理工件的技术包定义。它被编码为“域”值,但在您的情况下,您希望使用“实体”。所以你必须在这里调整技术包目录。如果您这样做,我建议您调整 DomainEntityJPA2Metamodel(JPA2 元模型)、DomainEntityJPA2EmbeddedId(用于嵌入式 Id)和 EnumerationReferenceDataJPA2(用于枚举)的技术包,必要时将“域”替换为“实体”。

目前在 minuteproject 主配置中没有约定(还)来更改技术包。

那么为什么需要技术包呢?

这是一种在不同堆栈之间进行分类的方法,可以在其中生成依赖于 JPA2 的其他轨道(例如:DAO、JSF ...)。

商务套餐

除了技术,分钟项目还添加了业务包的概念,它是一种根据业务方面(管理、财务等)收集您的实体的方法

如果您不添加任何业务包,它会提供模型的包。如果您不提供任何模型名称(如控制台上的示例),则会给出默认模型名称“defaultmodel”。

我希望它有所帮助。

于 2013-11-03T22:16:52.910 回答