在 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个参数“$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
- 速度宏用法:
#foreach( $link in $entity.selectedLinks )
## Macro below replaces '$jpa.linkAnnotations(...)'
#jpaLinkAnnot($link)
private ${link.formattedFieldType(10)} $link.formattedFieldName(12) ;
#end
我正在尝试使用 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个参数“$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
- 速度宏用法:
#foreach( $link in $entity.selectedLinks )
## Macro below replaces '$jpa.linkAnnotations(...)'
#jpaLinkAnnot($link)
private ${link.formattedFieldType(10)} $link.formattedFieldName(12) ;
#end