Предположим, что Customer
и Account
имеют отношение один ко многим.Допустим, когда новый банковский счет создает информацию о клиентах, также агрегировать.Для выполнения этой задачи сущность Account
также ссылается на объект Customer
.
Когда я сохраняю Account
и Customer
уже существует в таблице, его необходимо обновить или оставить без изменений.Если он не существует, запись клиента должна быть создана.Как это сделать с помощью каскадных типов в JPA?Если это невозможно, как обострить эту проблему?
Субъект счета:
@Entity
@Table(name = "account")
public class Account implements Serializable {
private static final long serialVersionUID = 407923973092266323L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "accID")
private Integer accountId;
@Column(name = "type")
private String accType;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "cus_ID")
private Customer customer;
@Temporal(value = TemporalType.DATE)
@Column(name = "openDate")
private Date createDate;
// Getters & Setters
}
Субъект клиента:
@Entity
@Table(name = "customer")
public class Customer implements Serializable {
private static final long serialVersionUID = 8149369511517077958L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "authorID",nullable = false)
private Integer cusId;
@Column(name = "cusName")
private String cusName;
public Customer(){}
public Customer(String cusName){this.cusName = cusName}
// Getter & Setters
}
AccountDAO:
@Repository
public class AccountDAO{
@Autowired
private AccountRepository accrepo;
public boolean insertAccount(String accType, String cusName, LocalDate createDate) {
try{
Date date = Date.from(createDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Account acc1 = new Account();
acc1.setAccType(accType);
acc1.setCreateDate(date);
acc1.setCustomer(new Customer(cusName));
accrepo.save(acc1);
return true;
}catch(Exception ex){ex.printStackTrace();}
}
return false;
}