我正在使用hibernate-JPA进行查询。分行使用银行实体的ID,并且我想在一次交易中保留这些实体。您认为这可能吗?
当我执行以下代码时,它给我错误BANK_BANKID未找到。我认为问题是由于未提交BankID而发生的。这意味着您认为我需要两个不同的事务来提交银行,然后获得银行的ID并将其返回给分行,以保留具有银行ID的分行吗?
问候 托尼库克
EntityManagerFactory emf = Persistence.createEntityManagerFactory("moneyTransfer");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
BankService bankService = new BankServiceImpl();
BranchService branchService = new BranchServiceImpl();
Bank bank = bankService.createBank();
Branch branch = branchService.createBranch(bank);
tx.begin();
try {
em.persist(bank);
em.persist(user);
em.persist(branch);
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
emf.close();
}
/* Bank Entity */
@Entity
public class Bank {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(updatable = false, nullable = false)
private long bankId;
@Column
private String bankName;
/*Branch Entity*/
@Entity
public class Branch {
@Id
@GeneratedValue( strategy= GenerationType.IDENTITY )
@Column(updatable = false, nullable = false)
private long branchId;
@Column
private String branchName;
@Column
private String branchAddress;
@Column
private String branchCity;
@Column
private String branchCountry;
@OneToOne
private Bank bank;
SQL:
create table BANK (
bankId BIGINT primary key auto_increment,
bankName varchar(255) not null
);
create table BRANCH (
branchId BIGINT primary key auto_increment,
branchName varchar(255) not null,
branchAddress varchar(255) not null,
branchCity varchar(255) not null,
branchCountry varchar(255) not null,
bankId BIGINT not null
);