Forums de discussion

How to create one to many relationship in Liferay 6.2

thumbnail
saleem khan, modifié il y a 9 années.

How to create one to many relationship in Liferay 6.2

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
Hi.....
I am new to liferay,
Can any tell how to create one to many relation ship in liferay 6.2
i thought of using mapping-key but as the mapping key is removed, i dont no how to create a one to many relationship.
have tried the following code added in service.xml but Methods and related to that code are not getting generated.

<!-- Relationship -->
<column name="lmsBorrowings" type="Collection" entity="LMSBorrowing" />

can any pleas suggest the solution
thansk. emoticon
thumbnail
Meera Prince, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Liferay Legend Publications: 1111 Date d'inscription: 08/02/11 Publications récentes
Hi
Have a look into following link it may help you..

http://www.liferaysavvy.com/2014/01/liferay-service-builder-many-to-many_12.html


Regards,
Meera Prince
thumbnail
saleem khan, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
I need how to create one to many relationship pleas tell how to do it liferay 6.2
thumbnail
saleem khan, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
Have tried above method of yours in the website but getting an exception pleas tell me whats wrong below is the code of service.xml

<!--?xml version="1.0" encoding="UTF-8"?-->

<service-builder package-path="com.slayer">
	<author>saleem</author>
	<namespace>LMS</namespace>

	<entity name="LMSBook" local-service="true" remote-service="false">
		<!-- PK fields -->
		<column name="bookId" type="long" primary="true" id-type="increment" />
		
		<!-- UI fields -->
		<column name="bookTitle" type="String" />
		<column name="author" type="String" />
		
		<!-- Relationship -->
        <column name="lmsBorrowings" type="Collection" entity="LMSBorrowing" mapping-table="bookId" />
                        
        <!-- Here by default mapping-key is the primary key 
             so no need of using mapping-key attribute and also support for 
             mapping-key attribute has been removed in liferay6.2 see DTD for more details-->
		
		<!-- Audit fields -->
		<column name="dateAdded" type="Date" />
		<column name="modifiedDate" type="Date" />
		
		<order by="desc">
			<order-column name="modifiedDate"></order-column>
		</order>
		
		<finder return-type="Collection" name="BookTitle">
			<finder-column name="bookTitle" />
		</finder>
		
		<finder return-type="LMSBook" name="BookTitle_Author">
			<finder-column name="bookTitle" />
			<finder-column name="author" />
		</finder>
		
		<reference package-path="com.liferay.portal" entity="Image" />
	</entity>
	
	
	<entity name="LMSBorrowing" local-service="true" remote-service="false">
			<!-- PK fields -->
			<column name="borrowingId" type="long" primary="true" id-type="increment" />
			
			<!-- FK fields -->
			<column name="bookId" type="long" />
			<column name="memberId" type="long" />
			
			<!-- Audit fields -->
			<column name="dateBorrowed" type="Date" />
			<column name="dateReturned" type="Date" />
			
			<finder return-type="Collection" name="BookId">
				<finder-column name="bookId"></finder-column>
			</finder>
			
	</entity>
</service-builder>


and getting the following exception while building the service layer.

[Console output redirected to file:E:\Liferay\LIFERAY\.metadata\.plugins\com.liferay.ide.sdk.core\sdk.log]
Buildfile: E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\build.xml
build-service:
      [jar] Building MANIFEST-only jar: E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\build-service-classpath.jar
   [delete] Deleting: E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\build-service-classpath.jar.manifest
   [delete] Deleting: E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\build-service-classpath.jar
     [echo] Loading jar:file:/E:/Liferay/LIFERAY/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties
     [echo] Loading jar:file:/E:/Liferay/LIFERAY/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties
     [echo] Loading jar:file:/E:/Liferay/LIFERAY/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties
     [echo] Building LMSBook
     [echo] Writing E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\src\com\slayer\service\persistence\LMSBookPersistenceImpl.java
     [echo] Writing E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\service\com\slayer\service\persistence\LMSBookPersistence.java
     [echo] Writing E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\service\com\slayer\service\persistence\LMSBookUtil.java
     [echo] 10:43:09,300 ERROR [main][runtime:96] Template processing error: "Method public java.util.List com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(java.lang.String) throws java.io.IOException threw an exception when invoked on com.liferay.portal.tools.servicebuilder.ServiceBuilder@4d4a3cb9"
     [echo] Method public java.util.List com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(java.lang.String) throws java.io.IOException threw an exception when invoked on com.liferay.portal.tools.servicebuilder.ServiceBuilder@4d4a3cb9
     [echo] The problematic instruction:
     [echo] ----------
     [echo] ==&gt; list serviceBuilder.getMappingEntities(column.mappingTable) as mapColumn [on line 280, column 41 in com/liferay/portal/tools/servicebuilder/dependencies/model_impl.ftl]
     [echo] ----------
     [echo] Java backtrace for programmers:
     [echo] ----------
     [echo] freemarker.template.TemplateModelException: Method public java.util.List com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(java.lang.String) throws java.io.IOException threw an exception when invoked on com.liferay.portal.tools.servicebuilder.ServiceBuilder@4d4a3cb9
     [echo] 	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
     [echo] 	at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)
     [echo] 	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
     [echo] 	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
     [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.ConditionalBlock.accept(ConditionalBlock.java:79)
     [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.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:4976)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder._createModelImpl(ServiceBuilder.java:2346)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.<init>(ServiceBuilder.java:750)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.main(ServiceBuilder.java:228)
     [echo] Caused by: java.lang.NullPointerException
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(ServiceBuilder.java:1123)
     [echo] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [echo] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     [echo] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     [echo] 	at java.lang.reflect.Method.invoke(Unknown Source)
     [echo] 	at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866)
     [echo] 	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
     [echo] 	... 27 more
     [echo] Method public java.util.List com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(java.lang.String) throws java.io.IOException threw an exception when invoked on com.liferay.portal.tools.servicebuilder.ServiceBuilder@4d4a3cb9
     [echo] The problematic instruction:
     [echo] ----------
     [echo] ==&gt; list serviceBuilder.getMappingEntities(column.mappingTable) as mapColumn [on line 280, column 41 in com/liferay/portal/tools/servicebuilder/dependencies/model_impl.ftl]
     [echo] ----------
     [echo] Java backtrace for programmers:
     [echo] ----------
     [echo] freemarker.template.TemplateModelException: Method public java.util.List com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(java.lang.String) throws java.io.IOException threw an exception when invoked on com.liferay.portal.tools.servicebuilder.ServiceBuilder@4d4a3cb9
     [echo] 	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
     [echo] 	at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)
     [echo] 	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
     [echo] 	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
     [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.ConditionalBlock.accept(ConditionalBlock.java:79)
     [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.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:4976)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder._createModelImpl(ServiceBuilder.java:2346)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.<init>(ServiceBuilder.java:750)
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.main(ServiceBuilder.java:228)
     [echo] Caused by: java.lang.NullPointerException
     [echo] 	at com.liferay.portal.tools.servicebuilder.ServiceBuilder.getMappingEntities(ServiceBuilder.java:1123)
     [echo] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [echo] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     [echo] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     [echo] 	at java.lang.reflect.Method.invoke(Unknown Source)
     [echo] 	at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866)
     [echo] 	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
     [echo] 	... 27 more
    [mkdir] Created dir: E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\service-classes
     [copy] Copied 6 empty directories to 6 empty directories under E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\service-classes
    [javac] Compiling 30 source files to E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\service-classes
      [zip] Building zip: E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\lib\library-portlet-service.jar
   [delete] Deleting directory E:\Liferay\LIFERAY\liferay-plugins-sdk-6.2\portlets\library-portlet\docroot\WEB-INF\service-classes
BUILD SUCCESSFUL
Total time: 26 seconds
</init></init>
thumbnail
Meera Prince, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Liferay Legend Publications: 1111 Date d'inscription: 08/02/11 Publications récentes
Hi
Refer following thread..

Use Mapping Key. or you can assume Many to Many in one direction then it will be one to many its just my assumption..

Mapping key was deprecated in liferay 6.2

https://www.liferay.com/community/forums/-/message_boards/message/34688498

Have look into following service.xml file of portal have a look into Group entity..


Regards,
Meera Prince
thumbnail
saleem khan, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
Thanks for replying i have followed to your website and done the necessary editing to my code but get an exception please check the above code and exception which i have update.
thumbnail
saleem khan, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2 (Réponse)

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
i have solved the above exception by giving the package path to the entity and doesnt give any problem but their is new problem now
first consider the code

   <column name="lmsBorrowings" type="Collection" entity="com.slayer.LMSBorrowing" mapping-table="bookId" />
     

now the problem is that its not creating the table now,after service building their should be a new table(lms_bookId) but the problem is that the table i not getting created.
please give the solution for this.
thanks
thumbnail
Subhash Pavuskar, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2 (Réponse)

Regular Member Publications: 234 Date d'inscription: 13/03/12 Publications récentes
Hi,
Delete a row from the servicecomponent table and try fresh service build.
thumbnail
saleem khan, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
thank for replying sir will try out what u said and will update
thumbnail
saleem khan, modifié il y a 9 années.

RE: How to create one to many relationship in Liferay 6.2

Junior Member Publications: 71 Date d'inscription: 16/11/13 Publications récentes
sir, sir got it working and ur method worked thanks for ur help