【问题标题】:how to create object with @GeneratedValue(strategy = GenerationType.AUTO)如何使用 @GeneratedValue(strategy = GenerationType.AUTO) 创建对象
【发布时间】:2018-09-28 03:17:01
【问题描述】:

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

抱歉这些愚蠢的问题我真的无法弄清楚。

【问题讨论】:

    标签: orm ejb jpa-2.1


    【解决方案1】:

    首先使用 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 Transaction 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 2011-03-05
      • 2017-01-06
      • 2012-02-15
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      相关资源
      最近更新 更多