Fórum
Many to Many Relationship possible in Liferay 7?
Rajat Pancholy, modificado 6 Anos atrás.
Many to Many Relationship possible in Liferay 7?
New Member Postagens: 5 Data de Entrada: 10/06/17 Postagens Recentes
Hi, I was trying to implement Many-to-Many relationship using ServiceBuilder in Liferay 7, but I end up with an error in the generated Persistance classes.
The following are the entities in the ServiceBuilder along with the Mapping Table;
[indent]
But then after building Service and refreshing Gradle Project, the generated Persistence Impl Classes throw an error:
The error is:
The generated tables.sql file:
^
The part where the error resides in DepartmentPersistenceImpl.java is:
[indent]
The part where the error resides in EmployeePersistenceImpl.java:
[indent]
I am new to Liferay Development, Can anyone help me resolve what's the issue here?
The following are the entities in the ServiceBuilder along with the Mapping Table;
[indent]
<service-builder package-path="com.manytomany">
<namespace>ManyToMany</namespace>
<entity name="Employee" local-service="true" remote-service="false" table="Employee">
<column name="eid" type="long" primary="true"></column>
<column name="name" type="String"></column>
<column name="address" type="String"></column>
<column name="deptid" type="Collection" entity="Department" mapping-table="Employee_department" />
</entity>
<entity name="Department" local-service="true" remote-service="false" table="Department">
<column name="deptid" type="long" primary="true"></column>
<column name="department" type="String"></column>
<column name="eid" type="Collection" entity="Employee" mapping-table="Employee_department" />
</entity>
</service-builder>
[/indent]But then after building Service and refreshing Gradle Project, the generated Persistence Impl Classes throw an error:
The error is:
symbol: method getCompanyId()
location: variable department of type Department
D:\Liferay\workspace\LProject\modules\ManyToMany\ManyToMany-service\src\main\java\com\mtm\service\persistence\impl\DepartmentPersistenceImpl.java:851: error: cannot find symbol
departmentToEmployeeTableMapper.addTableMapping(department.getCompanyId(),
The generated tables.sql file:
create table Department (
deptid LONG not null primary key,
department VARCHAR(75) null
);
create table Employee (
eid LONG not null primary key,
name VARCHAR(75) null,
address VARCHAR(75) null
);
create table ManyToManyService_Employee_department (
companyId LONG not null,
deptid LONG not null,
eid LONG not null,
primary key (deptid, eid)
);
^
The part where the error resides in DepartmentPersistenceImpl.java is:
[indent]
@Override
public void addEmployee(long pk, long employeePK) {
Department department = fetchByPrimaryKey(pk);
if (department == null) {
departmentToEmployeeTableMapper.addTableMapping(companyProvider.getCompanyId(),
pk, employeePK);
}
else {
departmentToEmployeeTableMapper.addTableMapping(department.getCompanyId(),
pk, employeePK);
}
}
[/indent]The part where the error resides in EmployeePersistenceImpl.java:
[indent]
@Override
public void addDepartment(long pk, long departmentPK) {
Employee employee = fetchByPrimaryKey(pk);
if (employee == null) {
employeeToDepartmentTableMapper.addTableMapping(companyProvider.getCompanyId(),
pk, departmentPK);
}
else {
employeeToDepartmentTableMapper.addTableMapping(employee.getCompanyId(),
pk, departmentPK);
}
}
[/indent]I am new to Liferay Development, Can anyone help me resolve what's the issue here?
Ilja Sidoroff, modificado 6 Anos atrás.
RE: Many to Many Relationship possible in Liferay 7?
New Member Mensagem: 1 Data de Entrada: 07/07/17 Postagens Recentes
I had a similar problem when migrating a service builder module from an old Liferay to DXP. I noticed that I needed to add companyId column to my tables to get compiling service builder code (see recommendation here https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/defining-an-object-relational-map-with-service-builder , in Step 4).
I haven't inspected the issue yet, and I don't know wheter it is a bug or a feature.
I haven't inspected the issue yet, and I don't know wheter it is a bug or a feature.
venkata ashok kumar ananthapalli, modificado 6 Anos atrás.
RE: Many to Many Relationship possible in Liferay 7?
New Member Postagens: 8 Data de Entrada: 16/09/14 Postagens Recentes
Iam also facing the Same problem, is it required to add column Id in entity?
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1412: error: cannot find symbol
empAddressToEmployeeTableMapper.addTableMapping(empAddress.getCompanyId(),
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1432: error: cannot find symbol
empAddressToEmployeeTableMapper.addTableMapping(empAddress.getCompanyId(),
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1453: error: cannot find symbol
companyId = empAddress.getCompanyId();
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1560: error: cannot find symbol
companyId = empAddress.getCompanyId();
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1421: error: cannot find symbol
employeeToEmpAddressTableMapper.addTableMapping(employee.getCompanyId(),
^
symbol: method getCompanyId()
location: variable employee of type Employee
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1441: error: cannot find symbol
employeeToEmpAddressTableMapper.addTableMapping(employee.getCompanyId(),
^
symbol: method getCompanyId()
location: variable employee of type Employee
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1462: error: cannot find symbol
companyId = employee.getCompanyId();
^
symbol: method getCompanyId()
location: variable employee of type Employee
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1571: error: cannot find symbol
companyId = employee.getCompanyId();
^
symbol: method getCompanyId()
location: variable employee of type Employee
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
8 errors
FAILED
FAILURE: Build failed with an exception.
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1412: error: cannot find symbol
empAddressToEmployeeTableMapper.addTableMapping(empAddress.getCompanyId(),
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1432: error: cannot find symbol
empAddressToEmployeeTableMapper.addTableMapping(empAddress.getCompanyId(),
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1453: error: cannot find symbol
companyId = empAddress.getCompanyId();
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmpAddressPersistenceImpl.java:1560: error: cannot find symbol
companyId = empAddress.getCompanyId();
^
symbol: method getCompanyId()
location: variable empAddress of type EmpAddress
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1421: error: cannot find symbol
employeeToEmpAddressTableMapper.addTableMapping(employee.getCompanyId(),
^
symbol: method getCompanyId()
location: variable employee of type Employee
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1441: error: cannot find symbol
employeeToEmpAddressTableMapper.addTableMapping(employee.getCompanyId(),
^
symbol: method getCompanyId()
location: variable employee of type Employee
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1462: error: cannot find symbol
companyId = employee.getCompanyId();
^
symbol: method getCompanyId()
location: variable employee of type Employee
D:\oot\voot_workspace\voot_liferay_workspace\modules\Employee\Employee-service\src\main\java\com\valtech\service\persistence\impl\EmployeePersistenceImpl.java:1571: error: cannot find symbol
companyId = employee.getCompanyId();
^
symbol: method getCompanyId()
location: variable employee of type Employee
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
8 errors
FAILED
FAILURE: Build failed with an exception.