【问题标题】:I need help for persisting into oracle database我需要帮助来持久化到 oracle 数据库
【发布时间】:2015-11-13 19:54:42
【问题描述】:

在持久化到数据库时生成 id 存在问题。 我将以下代码添加到我的 jpa 实体文件中,但是我的 personid 为 0。

@Id
@Column(unique=true, nullable=false, precision=10, name="PERSONID")
@SequenceGenerator(name="appUsersSeq", sequenceName="SEQ_PERSON", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "appUsersSeq")
private long personid;

Ejb 服务:

@Stateless
public class EjbService implements EjbServiceRemote {

@PersistenceContext(name = "Project1245")
private EntityManager em;


@Override
public void addTperson(Tperson tp) {
    em.persist(tp);

}

}

【问题讨论】:

    标签: oracle jpa sequence insert-id


    【解决方案1】:

    0 是long 类型的默认值。 id 将在调用相关序列的选择查询后设置,通常在您持久化实体时执行。你在坚持实体吗?如果是,请发布数据库序列定义以进行检查。

    【讨论】:

    • CREATE SEQUENCE "DB"."SEQ_PERSON" MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
    • 您数据库中的记录确实有 peraonid 值 0?你在检查persist实体之后的java对象id的值吗?
    • 不,我的数据库中没有 0 值 personid
    • 序列看起来不错。正如我所说,当您创建 new java 对象时,personid 值为 0。在您 persist 对象之后,该值将替换为给定的序列值,我的意思是当您将其传递给 @ 987654325@ 或对象由于级联持久传播或其他原因而持久化。
    • 数据库中没有 id 为 0 的记录,它永远不会改变,尽管我放了 sequencegenerator,但总是得到 0
    猜你喜欢
    • 2021-04-06
    • 2011-02-27
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多