Skip to content
Advertisement

Column ‘foreign_key_id’ cannot be null

I have a rest api exposed via @RepositoryRestResource from spring-data-rest-api. When I try to give the json payload from Postman to create a User linked to an Organization, it complains that Column 'organizationId' cannot be null, when I clearly provided it in the json.

{
    "firstName": "Test",
    "lastName": "User",
    "email": "user@example.com",
    "phoneNumber": "+12019582790",
    "organizationId": "22bf93a5-e620-4aaf-8333-ad67391fb235",
    "password": "example123",
    "role": "admin",
}

Each user belongs to an organization, so it’s a many to one relationship. I want Java to map the Organization that the User belongs to into the User as an Organization object.

User.java:

@Entity
@Table(name="user")
public class User {

    @ManyToOne(targetEntity = Organization.class, fetch = FetchType.EAGER)
    @JoinColumn(name = "organizationId", nullable = false)
    private Organization organization;
}

Organization.java:

@Entity
@Table(name = "organization")
public class Organization {

    @Id
    @GeneratedValue(generator = "id-generator")
    @Type(type = "uuid-char")
    @Column(name="organizationId")
    private UUID organizationId;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "organization")
    private Set<User> users;
}

Any help is greatly appreciated.

Advertisement

Answer

This is the appoach I ended up going with. Still would like to know why the @ManyToOne annotation isn’t saving the organizationId as a foreign key in the User table by itself.

User.java:

@Type(type = "uuid-char")
@Column
private UUID organizationId;

@ManyToOne
@JoinColumn(name = "organizationId", insertable = false, updatable = false)
private Organization organization;

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement