Skip to content

Commit 89ffa0f

Browse files
authored
Merge pull request #3 from domaframework/feature/add-manager-relationship
Add manager relationship to Employee aggregate strategy
2 parents 796393f + 12368a2 commit 89ffa0f

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

build.gradle.kts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,9 @@ fun writeEmployeeAggregateStrategyCode(
194194
195195
@AggregateStrategy(root = Employee$i.class, tableAlias = "e")
196196
public interface Employee${i}AggregateStrategy {
197+
198+
@AssociationLinker(propertyPath = "manager", tableAlias = "m")
199+
BiConsumer<Employee$i, Employee$i> manager = (e, m) -> e.manager = m;
197200
198201
@AssociationLinker(propertyPath = "department", tableAlias = "d")
199202
BiConsumer<Employee$i, Department$i> department =
@@ -300,6 +303,8 @@ fun writeSelectByIdSqlFile(
300303
"""
301304
SELECT /*%expand*/*
302305
FROM employee$i e
306+
LEFT JOIN employee$i m
307+
ON e.manager_id = m.id
303308
INNER JOIN department$i d
304309
ON e.department_id = d.id
305310
WHERE e.id = /*id*/0
@@ -445,8 +450,18 @@ fun writeEmployeeDaoTestCode(
445450
assertNotNull(employee);
446451
assertNotNull(employee.name);
447452
assertNotNull(employee.department);
453+
assertNull(employee.manager);
448454
assertEquals("John Smith", employee.name.value());
449455
assertEquals("Engineering", employee.department.name.value());
456+
457+
var employee2 = employeeDao.selectById(2L);
458+
assertNotNull(employee2);
459+
assertNotNull(employee2.name);
460+
assertNotNull(employee2.department);
461+
assertNotNull(employee2.manager);
462+
assertEquals("Sarah Johnson", employee2.name.value());
463+
assertEquals("Engineering", employee2.department.name.value());
464+
assertEquals(employee.id, employee2.manager.id);
450465
}
451466
}
452467
""".trimIndent(),

src/main/java/com/example/EmployeeAggregateStrategy.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
@AggregateStrategy(root = Employee.class, tableAlias = "e")
88
public interface EmployeeAggregateStrategy {
99

10+
@AssociationLinker(propertyPath = "manager", tableAlias = "m")
11+
BiConsumer<Employee, Employee> manager = (e, m) -> e.manager = m;
12+
1013
@AssociationLinker(propertyPath = "department", tableAlias = "d")
1114
BiConsumer<Employee, Department> department =
1215
(e, d) -> {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
SELECT /*%expand*/*
22
FROM employee e
3+
LEFT JOIN employee m
4+
ON e.manager_id = m.id
35
INNER JOIN department d
46
ON e.department_id = d.id
57
WHERE e.id = /*id*/0

src/test/java/com/example/EmployeeDaoTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,17 @@ void selectById() {
5656
assertNotNull(employee);
5757
assertNotNull(employee.name);
5858
assertNotNull(employee.department);
59+
assertNull(employee.manager);
5960
assertEquals("John Smith", employee.name.value());
6061
assertEquals("Engineering", employee.department.name.value());
62+
63+
var employee2 = employeeDao.selectById(2L);
64+
assertNotNull(employee2);
65+
assertNotNull(employee2.name);
66+
assertNotNull(employee2.department);
67+
assertNotNull(employee2.manager);
68+
assertEquals("Sarah Johnson", employee2.name.value());
69+
assertEquals("Engineering", employee2.department.name.value());
70+
assertEquals(employee.id, employee2.manager.id);
6171
}
6272
}

0 commit comments

Comments
 (0)