加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle Trigger的HIbernate题目,用于从序列天生id

发布时间:2021-05-16 23:48:16 所属栏目:站长百科 来源:网络整理
导读:我们有一个before insert触发器,它从序列中获取下一个值.当行使save()要领耐久化工具时,hibernate从序列中获取值并将其添加到工具中.当从 Spring的处事层提交事宜时,数据库上的ID值再次增进.假如工具已经有id,我该怎样停止获取nextval().. 这是我想要做的…

我们有一个before insert触发器,它从序列中获取下一个值.当行使save()要领耐久化工具时,hibernate从序列中获取值并将其添加到工具中.当从 Spring的处事层提交事宜时,数据库上的ID值再次增进.假如工具已经有id,我该怎样停止获取nextval()..

这是我想要做的……

userDAO的

public User saveUser(User user){
      session.getCurrentSession.save(user);//line2
      return user;//line3  
 }

UserService

public void saveUserAndWriteToAudit(User user,UserAudit userAudit){
  userDao.saveUser(user);//line1
  userAudit.setUserId(user.getId);//line4
  userAudit.saveUserAudit(userAudit);//line5
}

和用户类

@Entity
  public class User{

     @Id
     @GeneratedValue(strategy=GenerationType.AUTO,generator="a1")
     @SequenceGenerator(name="a1",sequenceName="usersequence")
     private Long id;
     /////////////////
 }

当光标达到line1和line2时,用户工具在id属性中为null.在line2之后,它有来自序列的nextval – 让我们说1.在第4行,我已将用户的id = 1添加到useraudit工具..当事宜在第5行之后提交时,2被插入到User的id列中,1被插入到UserAudit的userId列中.这对我没有任何意义:(我该怎样停止这个题目?感谢!

只需将您的触发器更新为仅在未给出ID时触发.
create or replace
trigger sa.my_trigger
before insert on sa.my_table
for each row
when (new.id is null)
begin
   select sa.my_sequence.nextval
    into :new.id
    from dual;
end;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读