双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

请教:Hibernate5.0配置hbm访问Oracle数据库,sequence主键的配置问题

lendylixt lendylixt 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题:程序运行时,hibernate自动创建的sequence不是在hbm主键配置中的名称,而是“hibernate_sequence”这个名称,怎样配置才能创建指定的sequence?

我的环境:hibernate5.0.6+oracle11g

hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">ora</property>
<property name="hibernate.connection.password">ora</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<mapping resource="lenApp/pojo/sysMng/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>


User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="lenApp.pojo.sysMng">
<class name="User" table="tbuser">
<id name="id" type="integer">
<column name="id" not-null="true" sql-type="NUMBER" unique="true"></column>
<generator class="sequence" >
<param name="sequence">sq_tbuser_uid</param>
</generator>
</id>
<property name="lname" column="lname" type="java.lang.String" length="80"></property>
<property name="pwd" column="pwd" type="string" length="80"></property>
<property name="uname">
<column name="uname" sql-type="varchar2(80)"></column>
</property>
<property name="isdel" column="isdel" type="int"></property>
<property name="count" formula="(select count() from tbuser)"></property>
</class>
</hibernate-mapping>


User.java

package lenApp.pojo.sysMng;
public class User {
private Integer id;
private String lname;
private String pwd;
private String uname;
public int isdel;
public int count;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getIsdel() {
return isdel;
}
public void setIsdel(int isdel) {
this.isdel = isdel;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public String toString() {
return "User [id=" + id + ", lname=" + lname + ", pwd=" + pwd
+ ", uname=" + uname + ", isdel=" + isdel + ", count=" + count
+ "]";
}

}


JUnitTest.java

@Test
public void testAdd() {
User user=new User();
user.setLname("asdfasdf");
user.setPwd("fdasfdas");
tx=sess.beginTransaction();
sess.persist(user);

tx.commit();
System.out.println(user.toString());
}


执行结果:
Hibernate:
create sequence hibernate_sequence start with 1 increment by 1
Hibernate:
create table tbuser (
id NUMBER not null,
lname varchar2(80 char),
pwd varchar2(80 char),
uname varchar2(80),
isdel number(10,0),
primary key (id)
)
Hibernate:
select
hibernate_sequence.nextval
from
dual
Hibernate:
insert
into
tbuser
(lname, pwd, uname, isdel, id)
values
(?, ?, ?, ?, ?)
User [id=1, lname=asdfasdf, pwd=fdasfdas, uname=null, isdel=0, count=0]
创建的sequence不是我指定的sequence名称,求解释和处理方法,谢谢
...全文
评论 6
收藏 已收藏
分享
返回顶部
lendylixt
Web 开发 81,108 成员 341,721 内容