如何使用@GeneratedValue创建对象(strategy = GenerationType.AUTO)

时间:2018-09-28 03:17:02

标签: orm ejb jpa-2.1

我是Java EE的新手,现在我对创建实体Transactiontype的新对象有一些疑问。 TransactionType entity class 如您所见,我已经创建了一对多关系(一种交易类型可以有零笔或多笔付款),我为transactionType分配了两个属性:id(autogeneration)和transactionType(String)。 还有一套付款方式,我想知道: 1.我只是在transactionType表中添加id和transactionType,如何在不添加任何付款的情况下创建对象? 2.在此处创建对象时,应该如何传递自动生成的值-> id?

对于这些愚蠢的问题,我真的无法解决。

1 个答案:

答案 0 :(得分:0)

首先,使用JPA将Java对象映射到一行SQL表,反之亦然。

  1. 当您在id参数上添加@GeneratedValue批注时,JPA将在幕后将id视为主键SQL等效项。因此,在持久化Java对象时无需设置ID;该ID将自动生成。
  2. 设置@OneToMany批注时,SQL中的等效关系是一对多关系。如果您不想设置付款,那就别做...

一些可保留的代码:

1。您必须注入EntityManager

@PersistenceContext(unitName = "myPU")
    private EntityManager entityManager;

2。坚持POJObjcte(Java事务API(JTA)会处理它)

  @Transactional(value = TxType.REQUIRED)
  public TransactionType create(@NotNull TransactionType item) {
        item.setPayment(payments); //it is not mandatory if you do not want to have payments
        item = entityManager.persist(item);
        return item;
 }    

在您保留该项目后,将自动设置ID。