保存实体而不提取ID

时间:2015-10-07 12:52:37

标签: jpa

我有一个表T1(ID AUTOINCREMENT INT,COL1,COL2等)。

JPA Entity for T1有一个字段ID,已标记为@Generated和@Id。这是告诉JPA实体的密钥不是由应用程序设置的,并且DB将生成ID。 代码调用persist方法来保存实体。我不需要管理实体。

@Entity
@Table(name = "T1")
public class Customer implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Long customerd;
    @Column(name = "COL1")
    private String col1;

当我运行应用程序时,JPA似乎INSERT表中的行并立即选择要在对象中设置的生成的ID。

是否可以告诉JPA不要获取生成的ID?我希望JPA执行INSERT并忘记记录。

数据库是DB2。 JPA实现是Hibernate。

此致

佳日

1 个答案:

答案 0 :(得分:1)

根据JPA规范,每个实体都必须具有主键 - 可以是简单主键或复合主键。这意味着您必须至少指定一个属性,以通过使用@Id或@EmbeddedId注释来指示它是您的实体的主键。 JPA提供程序将确保在持久调用期间,实体的生成ID将在Id注释属性中可用。 JPA提供程序将在事务提交之前或之后(取决于使用的生成策略)分配Id。无论使用何种策略,除非您自己手动设置Id属性,否则不会阻止JPA提供程序查询生成的Id并将其分配给您的实体。