提问人:coderxyz24 提问时间:8/20/2015 最后编辑:BalusCcoderxyz24 更新时间:8/21/2015 访问量:57
我需要帮助才能持久化到 oracle 数据库中
I need help for persisting into oracle database
问:
在持久化到数据库中时生成 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);
}
}
答:
0赞
Guillermo
8/20/2015
#1
0 是 type 的默认值。将在调用相关序列的 select 查询后设置 id,该查询通常在持久化实体时执行。你是否保留了实体?如果是,请发布数据库序列定义以进行检查。long
评论
0赞
coderxyz24
8/20/2015
CREATE SEQUENCE "DB"."SEQ_PERSON" MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
0赞
Guillermo
8/20/2015
数据库中的记录是否具有 peraonid 值 0?您是否正在检查实体后面的 java 对象 id 的值?persist
0赞
coderxyz24
8/20/2015
不,我的数据库中没有 0 值 personid
0赞
Guillermo
8/20/2015
序列看起来不错。正如我所说,当您创建 java 对象时,personid 值为 0。持久化对象后,该值将被替换为给定的序列值,我的意思是当您将其传递给对象时,或者由于级联持久化传播或其他原因而持久化对象时。new
EntityManager.persist
0赞
coderxyz24
8/20/2015
数据库中没有 ID 为 0 的记录,它永远不会改变,尽管我放了 sequencegenerator,但总是得到 0
上一个:从 JPA 获取身份生成的主键
评论