我无法解决这个问题,我已经尝试了几乎所有的方法,但你可以猜到-没有。
这是我的xml映射文件<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="Test" namespace="Test.Model">
<class name="Visitor" table="visitors" dynamic-update="true" >
<cache usage="read-write"/>
<id name="Id" column="id" type="long" >
<generator class="sequence" >
<param name="sequence">visitors_id_seq</param>
</generator>
</id>
<property name="Name" column ="name"/>
<property name="Age" column ="age"/>
<property name="Gender" column ="gender"/>
</class>
</hibernate-mapping>
它工作得很好,但是当我试图插入新的编码器时,它给了我一个错误
无法插入:[Test.Model.][SQL: INSERT INTO visitors .(姓名,年龄,性别,id) VALUES (?), ?, ?, ?)]
My model class是
public class Visitor : HumanEntityBase
{
}
public class HumanEntityBase : EntityBase
{
public virtual string Name { get; set; }
public virtual int Age { get; set; }
public virtual char Gender { get; set; }
}
public class EntityBase
{
public virtual long Id { get; set; }
}
我尝试过不同类型的类,如原生,身份,但没有帮助。
SQL在
后面CREATE TABLE visitors ( name text,
age integer,
gender character varying(1),
id bigserial NOT NULL,
CONSTRAINT visitors_primary
PRIMARY KEY (id) ) WITH ( OIDS=FALSE );
ALTER TABLE visitors OWNER TO postgres;
序列-- Sequence: visitors_id_seq
-- DROP SEQUENCE visitors_id_seq;
CREATE SEQUENCE visitors_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 3
CACHE 1;
ALTER TABLE visitors_id_seq
OWNER TO postgres;
请帮忙解决这个问题,我不知道还能再试什么
编辑
有没有办法不插入ID ?我认为它会工作,但我不知道如何做到这一点,只检索ID,但不插入生成等。
问题解决了。
主要问题是我试图插入空值
INSERT INTO visitors (id, name, age, gender) VALUES (nextval ('visitors_id_seq'), (('фыв22')::text), ((2112)::int4), ((' ')::text)) returning id
这不能从NPgsql工作,但从pgAdmin sql查询工作得很好。
我偶然发现了这个问题,我也不得不修改我的映射文件一点点
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="Test" namespace="Test.Model">
<class name="Visitor" table="visitors" dynamic-update="true" >
<cache usage="read-write"/>
<id name="Id" column="id" type="long">
<generator class="identity">
<param name="sequence">visitors_id_seq</param>
</generator>
</id>
<property name="Name" column ="name"/>
<property name="Age" column ="age"/>
<property name="Gender" column ="gender"/>
</class>
</hibernate-mapping>