论坛首页 Java企业应用论坛

hibernate怎样用ANSI-style?

浏览 4081 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-11-20  
譬如:TINYINT,BIT等
   发表时间:2003-11-20  
在映射文件中指定sql-type="..."
0 请登录后投票
   发表时间:2003-11-20  
为什么总是说错误类型?
[schemaexport] Unsuccessful: ORA-00902: 无效数据类型
生成这样的ddl
create table Test3 (
   id VARCHAR2(32) not null,
   i Types.TINYINT,
   primary key (id)
);
0 请登录后投票
   发表时间:2003-11-21  
自己顶一下,
我怎么用不了java.sql.Types里的类型,
<!------------------hbm-------------------->
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="org.nhweather.data.Test3" dynamic-update="false" dynamic-insert="false" >
<id name="id" column="id" type="java.lang.String" length="32" >
<generator class="uuid.hex"/>
</id>
<property name="i" type="int" update="true" insert="true" sql-type="Types.TINYINT" />
</class>
</hibernate-mapping>
<!--------------build.xml---------------------->
<target name="schemaexport">
<taskdef name="schemaexport"
classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask"
classpathref="class.path"/>
<schemaexport properties="hibernate.properties" quiet="no" text="no" drop="no" delimiter=";"
output="/root/myDoc/schema-sql/HourData-schema-export.sql">
<fileset dir="bin">
<include name="**/Test3.hbm.xml"/>
</fileset>
</schemaexport>
</target>
<!-------------生成这样的ddl------------>
drop table Test3 cascade constraints;
create table Test3 (
   id VARCHAR2(32) not null,
   i Types.TINYINT,
   primary key (id)
);
<---------------得到这样的结果------->
[schemaexport] Unsuccessful: ORA-00902: 无效数据类型
0 请登录后投票
   发表时间:2003-11-21  
引用

sql-type="Types.TINYINT"

sql-type是指定数据库类型,比如sql-type="varchar(32)"...
0 请登录后投票
   发表时间:2003-11-21  
说来说去就是不可移植!
我很想知道Dialect里的
register( Types.BIT, "NUMBER(1,0)" );
register( Types.BIGINT, "NUMBER(19,0)" );
register( Types.SMALLINT, "NUMBER(5,0)" );
register( Types.TINYINT, "NUMBER(3,0)" );
register( Types.INTEGER, "NUMBER(10,0)" );
register( Types.CHAR, "CHAR(1)" );
等等有什么用?
0 请登录后投票
   发表时间:2003-11-21  
这些应该是当你没有指定sql-type时的默认类型及类型的capacity。
0 请登录后投票
   发表时间:2003-11-21  
Types.BIT,Types.TINYINT这些是不是默认类型
如果是
能举个简单怎么可以用这些类型的例子吗?最好是Types.TINYINT
0 请登录后投票
   发表时间:2003-11-21  
下面是net.sf.hibernate.mapping.Column中的一段代码,没太仔细看,估计意思就是:
如果指定了sql-type,那就取它作为这列的类型,否则自动去判断这列的类型(为java.sql.Types中定义的一个int),再根据这个int值及你在映射中指定的length到你选择的Dialect中去查sql-type。
public String getSqlType(Dialect dialect, Mapping mapping); throws HibernateException {
		return (sqlType==null); ? dialect.getTypeName( getAutoSqlType(mapping);, getLength(); ); : sqlType;
	}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics