如何使用 Telosys 生成带有链接的记录
How to generate Records with links using Telosys
我正在使用 Telosys 模板为数据实体生成代码。我使用了模板,在这里我可以生成带有 link 的实体 classes,即与其他实体的关系。然而,生成的 DTO 记录没有正确映射 link,即在实体 class 中,如果存在 ManytoOne 关系和集合作为来自 getter 的返回类型,则同样不会反映在 DTO 记录中.
是否有任何其他模板可用或我应该对现有记录模板进行任何更改?
感谢任何帮助。
根据@Igu 的评论提问第 2 部分
我生成了这样的实体:
//--- ENTITY LINKS ( RELATIONSHIP )
@OneToMany(fetch = FetchType.EAGER, mappedBy="mcophy", targetEntity=Pgnphy.class)
private Collection<Pgnphy> listOfPgnphy ;
@OneToMany(fetch = FetchType.EAGER, mappedBy="mcophy", targetEntity=Pgaphy.class)
private Collection<Pgaphy> listOfPgaphy ;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="aiawtx", referencedColumnName="afawtx", insertable=false, updatable=false)
private Stnphy stnphy ;
符合预期。然而,当我生成我的 DTO 时,它们是这样的:
//----------------------------------------------------------------------
// ENTITY LINKS ( RELATIONSHIP )
//----------------------------------------------------------------------
private List<PgaphyDTO> listOfPgaphy ;
private Stnphy stnphy ;
private List<PgnphyDTO> listOfPgnphy ;
其中我期待第二个 link 是这样的:
private StnphyDTO stnphyDTO;
我用过
private ${link.formattedFieldType(10).trim().replace(">","DTO>")} $link.formattedFieldName(12) ;
我做错了什么?
确实,在这组模板中,DTO 中没有任何关系。
如果你想要一个带有 link 的基本 Java bean 的例子,你可以试试这个包:
https://github.com/telosys-templates-v3/java-domain-T300
(参见模板“domain_entity_java.vm”)
补充:
要转换 link 类型(例如“List< Book >”到“List< BookDTO >”),您可以使用“replace”方法(方法Java 中的 class 字符串)
将字符“>”替换为“DTO>”。
示例:
私人 ${link.formattedFieldType(10).replace(">","DTO>")}
我正在使用 Telosys 模板为数据实体生成代码。我使用了模板,在这里我可以生成带有 link 的实体 classes,即与其他实体的关系。然而,生成的 DTO 记录没有正确映射 link,即在实体 class 中,如果存在 ManytoOne 关系和集合作为来自 getter 的返回类型,则同样不会反映在 DTO 记录中.
是否有任何其他模板可用或我应该对现有记录模板进行任何更改?
感谢任何帮助。
根据@Igu 的评论提问第 2 部分 我生成了这样的实体:
//--- ENTITY LINKS ( RELATIONSHIP )
@OneToMany(fetch = FetchType.EAGER, mappedBy="mcophy", targetEntity=Pgnphy.class)
private Collection<Pgnphy> listOfPgnphy ;
@OneToMany(fetch = FetchType.EAGER, mappedBy="mcophy", targetEntity=Pgaphy.class)
private Collection<Pgaphy> listOfPgaphy ;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="aiawtx", referencedColumnName="afawtx", insertable=false, updatable=false)
private Stnphy stnphy ;
符合预期。然而,当我生成我的 DTO 时,它们是这样的:
//----------------------------------------------------------------------
// ENTITY LINKS ( RELATIONSHIP )
//----------------------------------------------------------------------
private List<PgaphyDTO> listOfPgaphy ;
private Stnphy stnphy ;
private List<PgnphyDTO> listOfPgnphy ;
其中我期待第二个 link 是这样的:
private StnphyDTO stnphyDTO;
我用过
private ${link.formattedFieldType(10).trim().replace(">","DTO>")} $link.formattedFieldName(12) ;
我做错了什么?
确实,在这组模板中,DTO 中没有任何关系。
如果你想要一个带有 link 的基本 Java bean 的例子,你可以试试这个包:
https://github.com/telosys-templates-v3/java-domain-T300
(参见模板“domain_entity_java.vm”)
补充:
要转换 link 类型(例如“List< Book >”到“List< BookDTO >”),您可以使用“replace”方法(方法Java 中的 class 字符串) 将字符“>”替换为“DTO>”。
示例: 私人 ${link.formattedFieldType(10).replace(">","DTO>")}