在 Telosys 中使用 Dsl 模型生成带有链接的实体时出现问题

Problem generating entity with links using Dsl model in Telosys

我正在尝试使用 Telosys 中的 dsl 模型生成 JPA 实体。

我的 Dsl 型号:

Car {​​​​​
id : int {​​​​​ @Id, @AutoIncremented }​​​​​;
user : Employee;
}​​​​​
    
Employee {​​​​​
id : long {​​​​​ @Id }​​​​​ ;
name : string ;
cars : Car[] ;
}​​​​​

我正在使用此代码:

    $jpa.linkAnnotations(4, $link, $entity.nonKeyAttributes)
    private ${link.fieldType} $link.fieldName ;
#end

我总是得到这样的结果:

    @OneToMany(mappedBy="null", targetEntity=Car.class)
    private List<Car> cars ;
    
    @ManyToOne
    private Employee user ;

我的问题是,我总是得到 mappedBy="null",我该如何解决这个问题?

这是在“DSL 模型”中的“反面”类型 link 情况下发生的错误。这个问题是由于 DSL 模型中没有外键定义引起的。 外键已添加到新的 DSL 模型语法中,并将在下一版本的 Telosys 中使用(即将推出)。

“$jpa”对象提供了一组函数作为编写快捷方式,所以同时你也可以创建一个Velocity宏来用你自己的代码替换“linkAnnotations”函数(纯 Velocity 语言)。

例如一个名为“jpaLinkAnnot”的宏:

  1. 速度宏定义(带1个参数“$link”):
#macro( jpaLinkAnnot $link)
#if ( $link.isOwningSide() )
    // Owning Side 
$jpa.linkAnnotations(4, $link, $entity.nonKeyAttributes)
#else
    // Inverse Side
#if ( $link.isCardinalityOneToMany() ) 
    @OneToMany(targetEntity=${link.targetEntity.name}.class )
#else 
$jpa.linkAnnotations(4, $link, $entity.nonKeyAttributes)
#end
#end
#end
  1. 速度宏用法:
#foreach( $link in $entity.selectedLinks )
## Macro below replaces '$jpa.linkAnnotations(...)'
#jpaLinkAnnot($link)
    private ${link.formattedFieldType(10)} $link.formattedFieldName(12) ;

#end