hibernate annation oracle sequence

struts2 spring3 mybatis3 用了很久,回过头来用hibernate,突然发现annation下的oracle序列使用很有意识

 

@Entity
@Table(name="sys_users")
@SequenceGenerator(name="seqUsers",sequenceName="seq_users")
public class SysUsers {
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqUsers")
	@Column(name="user_id")
	private Long userId;
	@Column(name="user_name")
	private String userName;
	@Column(name="user_password")
	private String userPwd;
	@Transient
	private String userStatus;
	@Column(name="time_insert")
	private Date timeInsert;

  如上,加入这段之后,他会用hibernate自己的序列,而放弃oracle生成的序列seq_users.

而令人困惑的是,在写入该对象时,打印的hql里还会显示

 

select seq_users.nextval from dual;

 可实际查询序列确发现该句并未调用而引起序列的变化。

 

这里要想使用oracle序列的正确做法是:

 

 

@Entity
@Table(name="sys_people")
@SequenceGenerator(name = "seqPeople", sequenceName = "seq_people")
public class SysPeople {
	@Id
	@GeneratedValue(generator="seqPeople")
	@Column(name="people_id")
	private Long peopleId;
	@Column(name="people_name")
	private String peopleName;
	@Column(name="age")
	private Long age;
	@OneToOne
	@JoinColumn(name="house_id")
	private SysHouse sysHouse;

 去掉strategy=GenerationType.SEQUENCE,即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值