我已经使用Nhibernate 2.1从Fluent Nhibernate 1.0升级到使用NHibernate 3.0 GA预发布1.x并且达到了我认为的回归,但我想知道是否确实如此.
我使用的是SQL Server Express 2008和MSSQL 2008方言,并且具有System.Drawing.Image类型的Image属性,我已将其映射为:
Map (food => food.Image)
.Length (int.MaxValue)
.Nullable ();
Run Code Online (Sandbox Code Playgroud)
Image表中的列是类型varbinary(MAX).
生成的属性的hbm是:
<property name="Image" type="System.Drawing.Image, System.Drawing,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<column name="Image" length="2147483647" not-null="false" />
</property>`
Run Code Online (Sandbox Code Playgroud)
但是无论我做什么,当使用当前的FNH和NH版本序列化时,二进制blob被截断为8000字节.以前的版本不是这种情况.
想法为什么会这样,以及如何解决/解决它?
我想要一个不定式主键,那就是BigInteger.
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-type-conversions.html
BIGINT[(M)] [UNSIGNED] BIGINT [UNSIGNED] java.lang.Long, if UNSIGNED java.math.BigInteger
Run Code Online (Sandbox Code Playgroud)
所以我创建了我的 entity
public class Alarm {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private BigInteger id;
Run Code Online (Sandbox Code Playgroud)
当我创建表时,出现以下错误。
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table alarm (id decimal(19,2) not null auto_increment, frequencyp0p1p2 integer not null, frequencyp3p7p8 integer not null, frequencyp4 integer not null, frequencyp6p5 integer not null, port_description varchar(255), primary key (id)) engine=MyISAM" via JDBC Statement
Caused by: java.sql.SQLSyntaxErrorException: Incorrect column specifier for column 'id'
Run Code Online (Sandbox Code Playgroud)
那么这里出了什么问题呢?