事情是这样的 在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 类型的字段?
我已经在谷歌百度搜三四个小时了,依然没有答案,希望大家都来帮帮我这个诅丧的程序员吧!