У меня есть две таблицы ... таблица заем и таблица клиент .Клиент может сделать несколько займов, но я бы хотел ограничить клиента одним активным займом за раз.Они не могут создать второй кредит до тех пор, пока первый кредит не будет завершен ( loan.active = false )
Я настроил свою таблицу займов следующим образом:
@Entity
public class Loan implements Serializable {
private static final long serialVersionUID = 0x62B6DA99AA12AAA8L;
@Column @GeneratedValue(strategy = GenerationType.AUTO) @Id private Integer id;
@OneToOne(fetch = FetchType.LAZY)
private Customer customer;
@Column private String dateLoaned;
@Column private String dateToReturn;
@Column private String dateOfReturn;
@Column private Boolean active=false;
А таблица клиентов выглядит так:
@Entity
public class Customer implements Serializable {
private static final long serialVersionUID = 0x63A6DA99BC12A8A8L;
@Column @GeneratedValue(strategy = GenerationType.AUTO) @Id private Integer id;
@Column private String firstname;
@Column private String surname;
@Column private String address;
@Column private String town;
@Column private String postcode;
@Column (unique=true) private String personalnumber;
@Column (unique=true) private String emailaddress;
@OneToOne(fetch = FetchType.EAGER)
private Loan loan;
Это позволяет мне создать новый кредит с тем же клиентом.Пока все хорошо.
Я хотел бы сделать запрос, который позволит мне узнать, есть ли у клиента активный кредит.
Мой кредитный репозиторий на данный момент:
@Query("select loan_id from Loan l where l.customer.id = :customerId and l.active = true")
Boolean customerHasActiveLoan(@Param("customerId") Integer customerId);
Это правильный способ сделать это?