I am defining the following with spring boot 2.0.5:
{code} [...] @Entity @Table(name = "User_", uniqueConstraints = @UniqueConstraint(columnNames={"client_id", "name"})) public class UserEntity implements Serializable { [...] @NonNull @Column(nullable = false, length = 255) private String name;
@NonNull @ManyToOne @JoinColumn(name = "client_id", nullable = false) private ClientEntity client;
@Column(name = "credentials_id", nullable = false, unique = true) private long credentialsId;
@Column(name = "functionrights_id", nullable = false, unique = true) private long functionRightsId;
[...] } {code} This results in the following sql statement which is an syntax error:
{code} CREATE TABLE USER_ ( ID NUMERIC(19,0) NOT NULL, VERSION INT NOT NULL, CREATED DATETIME NOT NULL, CREATEDBY VARCHAR(255) NOT NULL, LASTMODIFIED DATETIME NOT NULL, MODIFIEDBY VARCHAR(255) NOT NULL, LASTLOGINDATE DATETIME NULL DEFAULT NULL, NAME VARCHAR(255) NOT NULL, CLIENT_ID NUMERIC(19,0) NOT NULL, CREDENTIALS_ID NUMERIC(19,0) NOT NULL, FUNCTIONRIGHTS_ID NUMERIC(19,0) NOT NULL, CONTACTDATA_ID NUMERIC(19,0) NULL DEFAULT NULL, USERPROFILE_ID NUMERIC(19,0) NULL DEFAULT NULL, EXPIREDATE DATETIME NULL DEFAULT NULL, PRIMARY KEY (ID), FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT (ID), UNIQUE (CLIENT_ID, NAME) UNIQUE[*] (CREDENTIALS_ID), UNIQUE (FUNCTIONRIGHTS_ID), ) {code} As you could see there is a comma at the end after UNIQUE (FUNCTIONRIGHTS_ID) where it should not be - and between UNIQUE (CLIENT_ID, NAME) UNIQUE[*] (CREDENTIALS_ID) this comma is missing. So I assume that there is an implementation problem when using table based unique's mixed with column based uniques. |
|