This is my model:
class User {...}
class Book {
User author;
int number;
}
Every book number starts at 1 per author and increments upwards. So we'll have Books 1,2,3 by John Grisham, Book 1..5 by George Martin, etc...
Is there a unique constraint I can place on Book
, that would guarantee we don't have two books with the same number by the same author? Similar to @Column(unique = true)
, but the constraint only applies on the composite of Author X number
?
Use @UniqueConstraint
:
@Table(
uniqueConstraints=
@UniqueConstraint(columnNames={"author_id", "number"})
)
@Entity
class Book extends Model {
@ManyToOne
@JoinColumn(name = "author_id")
User author;
int number;
}