Skip to content

Invalid SQL generated if an entity contains composite key reference #2113

@belyaev-andrey

Description

@belyaev-andrey

Having entities:

class Employee {
   @Id
   EmployeeId id; //Composite ID
   //... Other fields
}

record EmployeeId(
		Organization organization,
		Long employeeNumber) {
}


@Table("locker")
public class Locker {
    @Id
    private Long id;
    private AggregateReference<Employee, EmployeeId> assignedTo; //Reference to employee
}
create table employee
(
    organization    varchar(20),
    employee_number int,
    ...
    constraint pk_employee primary key (employee_number, organization)
);
create table locker (
    id int,
    ...
    employee_number int,
    organization    varchar(20),
    constraint pk_locker primary key (id),
    constraint fk_locker_employee foreign key (employee_number, organization)
        references employee (employee_number, organization)
);

Issue: when inserting an entity with a composite ID, it properly generates SQL, but it doesn't work for reference fields:

DEBUG 82178 --- [    Test worker] o.s.jdbc.core.JdbcTemplate               : Executing prepared SQL statement [INSERT INTO "employee" ("employee_number", "name", "organization") VALUES (?, ?, ?)]
DEBUG 82178 --- [    Test worker] o.s.jdbc.core.JdbcTemplate               : Executing prepared SQL statement [SELECT "employee"."organization" AS "organization", "employee"."employee_number" AS "employee_number", "employee"."name" AS "name" FROM "employee" WHERE "employee"."employee_number" = ? AND "employee"."organization" = ?]
DEBUG 82178 --- [    Test worker] o.s.jdbc.core.JdbcTemplate               : Executing prepared SQL statement [INSERT INTO "locker" ("assigned_to", "capacity", "id") VALUES (?, ?, ?)]

Sample code: https://github.com/belyaev-andrey/composite-id-jdbc.git

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions