Forums de discussion

Service builder relationships

hadi mohammadi, modifié il y a 10 années.

Service builder relationships

Junior Member Publications: 48 Date d'inscription: 03/06/13 Publications récentes
Hi
I'm new to use service builder.
Please tell me how I can define a relationship in service builder.
I have two entity . A book and A library. How can I define their relationship by service builder.
Please introduce a resource or at least a sample for relations in service builder.
Thanks for your consideration.
I apreciate your help.
hadi mohammadi, modifié il y a 10 années.

RE: Service builder relationships

Junior Member Publications: 48 Date d'inscription: 03/06/13 Publications récentes
this is my service.xml
<!--?xml version="1.0" encoding="UTF-8"?-->

<service-builder package-path="com.liferay.library">
	
	<author>MidunamPeyman</author>
	<namespace>LIB</namespace>
	
	<entity name="Library" local-service="true" remote-service="true">
		<column name="libId" type="long" primary="true" />
		<column name="libName" type="String" />						
		<order by="asc">
			<order-column name="libId" />
		</order>				
		<finder name="LibId" return-type="Collection">
			<finder-column name="libName" />
		</finder>
	</entity>
	
	<entity name="Book" local-service="true" remote-service="true">
		<column name="bookId" type="long" primary="true" />
		<column name="bookName" type="String" />
		<!-- relationship -->
		<column name="libId" type="Collections" entity="com.liferay.library.Library" mapping-key="libId" />		
		
		<order by="asc">
			<order-column name="bookId"></order-column>
		</order>		
		<finder name="BookId" return-type="Collection">
			<finder-column name="bookName" />
		</finder>
	</entity>
	
</service-builder>

but when i build service.xml, i see below error in consol
[Console output redirected to file:/home/hadi/workspace/.metadata/.plugins/com.liferay.ide.eclipse.sdk/sdk.log]
Buildfile: /home/hadi/liferay/liferay-plugins-sdk-6.1.1/portlets/LibraryAndBooks-portlet/build.xml
build-service:
     [echo] Loading jar:file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties
     [echo] Sep 09, 2013 7:18:31 AM com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Global shared lib directory /home/hadi/liferay/liferay-plugins-sdk-6.1.1/lib/
     [echo] Sep 09, 2013 7:18:31 AM com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Global lib directory /home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/lib/ext/
     [echo] Sep 09, 2013 7:18:31 AM com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Portal lib directory /home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/
     [echo] Loading jar:file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties
     [echo] Loading jar:file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties
     [echo] Loading file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties
     [echo] Sep 09, 2013 7:18:31 AM com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Properties for portal loaded from [file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties, jar:file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties, jar:file:/home/hadi/Root/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties]
     [echo] Building Book
     [echo] Error on line 93, column 33 in com/liferay/portal/tools/servicebuilder/dependencies/model_impl.ftl
     [echo] serviceBuilder.getSqlType(packagePath + ".model." + entity.getName(), column.getName(), column.getType()) is undefined.
     [echo] It cannot be assigned to sqlType
     [echo] The problematic instruction:
     [echo] ----------
     [echo] ==&gt; assignment: sqlType=serviceBuilder.getSqlType(packagePath + ".model." + entity.getName(), column.getName(), column.getType()) [on line 93, column 33 in com/liferay/portal/tools/servicebuilder/dependencies/model_impl.ftl]
     [echo] ----------
     [echo] Java backtrace for programmers:
     [echo] ----------
     [echo] freemarker.core.InvalidReferenceException: Error on line 93, column 33 in com/liferay/portal/tools/servicebuilder/dependencies/model_impl.ftl
     [echo] serviceBuilder.getSqlType(packagePath + ".model." + entity.getName(), column.getName(), column.getType()) is undefined.
     [echo] It cannot be assigned to sqlType
     [echo] 	at freemarker.core.Assignment.accept(Assignment.java:111)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:221)
     [echo] 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:221)
     [echo] 	at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:428)
     [echo] 	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:221)
     [echo] 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:221)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:310)
     [echo] 	at freemarker.core.CompressedBlock.accept(CompressedBlock.java:73)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:221)
     [echo] 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
     [echo] 	at freemarker.core.Environment.visit(Environment.java:221)
     [echo] 	at freemarker.core.Environment.process(Environment.java:199)
     [echo] 	at freemarker.template.Template.process(Template.java:237)
     [echo] 	at com.liferay.portal.freemarker.FreeMarkerUtil.process(FreeMarkerUtil.java:47)
     [echo] 	at com.liferay.portal.freemarker.FreeMarkerUtil.process(FreeMarkerUtil.java:37)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder._processTemplate(ServiceBuilder.java:4983)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder._createModelImpl(ServiceBuilder.java:2293)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.<init>(ServiceBuilder.java:671)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.main(ServiceBuilder.java:151)

BUILD FAILED
/home/hadi/liferay/liferay-plugins-sdk-6.1.1/build-common-plugin.xml:207: Service Builder generated exceptions.

Total time: 8 seconds
</init>
thumbnail
ahad bahmanian, modifié il y a 10 années.

RE: Service builder relationships

New Member Publications: 8 Date d'inscription: 07/11/12 Publications récentes
Hi Hadi,
change this:
1- Collections ----------- > Collection
2- better change
<column name="libId" type="Collections" entity="com.liferay.library.Library" mapping-key="libId" />
to
<column name="libId-fk" type="Collection" entity="com.liferay.library.Library" mapping-key="bookId" />
mapping-key must refer to field in source table with same data type.