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,即可。

猜你喜欢

转载自sagewsg.iteye.com/blog/1528665
今日推荐