Hello Liferay and Community.
I am trying to set up the service.xml with a relation 1:n. A Member can have different Positions but a position is always assigned to one Member.
The entity Member must have as primary key an assembled primary key (teamId, userId).
1
2<?xml version="1.0" encoding="UTF-8"?>
3<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_0_0.dtd">
4<service-builder package-path="test">
5 <author>yves</author>
6 <namespace>test</namespace>
7
8 <entity name="Member" local-service="true" remote-service="false">
9 <column name="teamId" type="long" primary="true" />
10 <column name="userId" type="long" primary="true" />
11 <column name="companyId" type="long" />
12 <column name="position" type="Collection" entity="Position" mapping-key="positionId" />
13 </entity>
14
15 <entity name="Position" local-service="true" remote-service="false">
16 <column name="positionId" type="long" primary="true"/>
17 <column name="positionName" type="String" />
18 </entity>
19</service-builder>
Using the upper service.xml configuration the build-service call fails with:
1
2Java backtrace for programmers:
3 [echo] ----------
4 [echo] freemarker.core.InvalidReferenceException: Error on line 3852, column 25 in com/liferay/portal/tools/servicebuilder/dependencies/persistence_impl.ftl
5 [echo] serviceBuilder.getSqlType(packagePath + ".model." + entity.getName(), entity.getPKVarName(), entity.getPKClassName()) is undefined.
6 [echo] It cannot be assigned to entitySqlType
7 [echo] at freemarker.core.Assignment.accept(Assignment.java:111)
8 [echo] at freemarker.core.Environment.visit(Environment.java:221)
9 [echo] at freemarker.core.MixedContent.accept(MixedContent.java:92)
10 [echo] at freemarker.core.Environment.visit(Environment.java:221)
11 [echo] at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
12 [echo] at freemarker.core.Environment.visit(Environment.java:221)
13 [echo] at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
14 [echo] at freemarker.core.Environment.visit(Environment.java:428)
If I use a non assembled primary key the build-service call works fine.
Can someone help me with this? What's wrong?
Thanks a lot.
Best regards,
Yves