我想从关联中生成一个字段。 我遇到的问题是我正在使用:
[for (p: Property | aClass.getAssociations().ownedEnd -> select(p: Property | p.type <> aClass)) separator('\n')]
[p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/];
[/for]
[for (p: Property | aClass.getAssociations().ownedEnd -> select(p: Property | p.type = p.getOtherEnd().type)) separator('\n')]
[p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/];
[/for]
因此,检查所有关联,如果关联类型不是相同的ass类类型,则会创建该类型的字段。 如果结尾是相同的类型,它会创建一个与包含它的类相同类型的字段。
所以基本上如果有关联A - B和A - A. 对于B创建A,对于A创建B和A. 但是第二个循环存在问题。它创建了两个字段而不是一个字段,这非常符合逻辑。这就是问题所在。我怎么解决这个问题?我不确定我是否能够在这里声明某种变量并检查%2。我不能只拿一个值,因为可能有多个关联。 也许我做错了什么?也许有一种方法来迭代结束,这将节省我所有的检查和两个for循环?
答案 0 :(得分:0)
[for (a: Association | aClass.getAssociations())]
[if a.ownedEnd.type = a.ownedEnd.getOtherEnd().type]
[a.visibility/] [a.endType.name/] [a.endType.name.toLowerFirst()/];
[else]
[for (p: Property | a.ownedEnd -> select (type <> aClass))]
[p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/];
[/for]
[/if]
[/for]
这似乎可以解决问题