hibernate annotation oracle nvarchar2 类型映射

搜吃搜玩 2012-04-18 11:45:27
事情是这样的 在ORACLE 中 我建了一张表 SQL语句如下

create table Person(
id number primary key not null,
name nvarchar2(40) not null,
age number not null
);
create sequence person_id;

hibernate.cfg.xml 配置如下:

<property name="hbm2ddl.auto">validate</property>

POJO代码如下:

public class Person {
private int id;
private String name;
private int age;

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="personSEQ")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

测试代码如下

public class test {
public static void main(String[] args) {
Person p = new Person();
p.setName("xx3");
p.setAge(14);

Session session = new AnnotationConfiguration().configure().buildSessionFactory().getCurrentSession();
session.getTransaction().begin();
session.save(p);
session.getTransaction().commit();
}
}

运行报如下错误

Exception in thread "main" org.hibernate.HibernateException: Wrong column type in CH.PERSON for column name. Found: nvarchar2, expected: varchar2(255 char)
at org.hibernate.mapping.Table.validateColumns(Table.java:284)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1130)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:359)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at com.jxc.test.test.main(test.java:16)


经过测试我发现把建表语句 nvarchar2(40) 改成varchar2(40) 运行正常, 我知道在XML文件映射中 nvarchar2 类型是这样映射的

<property name="name">
<column name="name" sql-type="nvarchar2(20)"></column>
</property>

我想问的是 在annotation 中如何映射 nvarchar2 类型的字段?
我已经在谷歌百度搜三四个小时了,依然没有答案,希望大家都来帮帮我这个诅丧的程序员吧!
...全文
395 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
搜吃搜玩 2012-04-18
  • 打赏
  • 举报
回复
POJO 实体类 有

@Entity
@SequenceGenerator(name="personSEQ", sequenceName="person_id",allocationSize=1,initialValue=1)

刚刚没有复制全

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧