我正在使用Minuteproject生成我的 JPA2 实体。
我通过运行 .start-console.sh 来使用 GUI。并输入我所有的数据库连接和包详细信息。
它生成我所有的类,但每个类包如下。
package com.fantasy.entities.defautmodel.domain.defautmodel;
我想要以下。
package com.fantasy.entities;
关于如何改变这一点的任何想法?
我正在使用Minuteproject生成我的 JPA2 实体。
我通过运行 .start-console.sh 来使用 GUI。并输入我所有的数据库连接和包详细信息。
它生成我所有的类,但每个类包如下。
package com.fantasy.entities.defautmodel.domain.defautmodel;
我想要以下。
package com.fantasy.entities;
关于如何改变这一点的任何想法?
看起来这个页面解释: 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)
每个分钟项目人工制品都有一些与之关联的元数据。在 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”。
我希望它有所帮助。