telosys中使用dsl模型生成链接实体的java问题

rslzwgfq  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(427)

我试图在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=“null”,我该如何解决这个问题?

nfg76nw0

nfg76nw01#

这是在“dsl模型”中的“反向侧”类型链路的情况下发生的错误。这个问题是由于dsl模型中缺少外键定义造成的。外键已添加到新的dsl模型语法中,并将在telosys的下一个版本(即将发布)中使用。
“$jpa”对象提供了一组用作编写快捷方式的函数,因此在此期间,您还可以创建一个velocity宏,用自己的代码(纯velocity语言)替换“linkannotations”函数。
例如,名为“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

velocity宏用法:


# foreach( $link in $entity.selectedLinks )

## Macro below replaces '$jpa.linkAnnotations(...)'

# jpaLinkAnnot($link)

    private ${link.formattedFieldType(10)} $link.formattedFieldName(12) ;

# end

相关问题