У меня есть таблица базы данных. DDL для таблицы:
CREATE TABLE `acsblts` (
`usrnm` varchar(64) NOT NULL,
`rl` varchar(64) NOT NULL,
UNIQUE KEY `acsblts_idx_1` (`usrnm`,`rl`),
CONSTRAINT `acsblts_ibfk_1` FOREIGN KEY (`usrnm`) REFERENCES `lgn_crdntls` (`usrnm`)
)
Теперь я хочу создать Java класс для этой таблицы. Я сделал следующее:
@Entity
@Table(name = "acsblts", uniqueConstraints = { @UniqueConstraint(columnNames = { "rl", "usrnm" }) })
public class Acsblts {
@NotNull
@Column(name = "rl")
private String rl;
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH })
@JoinColumn(name = "usrnm", nullable = false)
@JsonIgnore
private LgnCrdntls usrnm;
// Constructors, Getters, Setters
}
Когда я пытаюсь запустить приложение, отображается ОШИБКА:
Не указан идентификатор для объекта: com.example.mngmntsstm.entity .user.Acsblts
Я понимаю следующее: отсутствие @Id
вызывает ОШИБКУ. Как я могу создать составной первичный ключ, используя rl
и usrnm
.
Является ли хорошей идеей использовать следующий id
в качестве primary_key вместо композитный_применный_ключ?
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;