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



我试图在Telosys中使用dsl模型生成JPA enitites。

我的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=";空";,我该怎么解决这个问题?

这是一个在"反面";类型链接;DSL模型";。这个问题是由DSL模型中缺少外键定义引起的。外键已添加到新的DSL模型语法中,并将在Telosys的下一个版本中可用(不久将合并(。

"$jpa";对象提供了一组用作书写快捷方式的函数,因此在此期间,您还可以创建一个Velocity宏来替换";链接注释";函数(纯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. Velocity宏用法:
#foreach( $link in $entity.selectedLinks )
## Macro below replaces '$jpa.linkAnnotations(...)'
#jpaLinkAnnot($link)
private ${link.formattedFieldType(10)} $link.formattedFieldName(12) ;
#end

最新更新