Java EclipseLink Sql Server标识\u插入错误

Java EclipseLink Sql Server标识\u插入错误,java,sql-server,eclipse,sql-server-2000,eclipselink,Java,Sql Server,Eclipse,Sql Server 2000,Eclipselink,使用EclipseLink,我试图将行插入到SQLServer遗留数据库中,该数据库具有自动递增的标识列: CREATE TABLE [dbo].[tContacts] ( [conIdContact] [int] IDENTITY (1, 1) NOT NULL , [conContactName] [varchar] (100) NOT NULL , ... 我正在使用中描述的“身份策略” 导致以下例外情况: 内部异常:com.microsoft.sqlserver.jdbc.SQLSe

使用EclipseLink,我试图将行插入到SQLServer遗留数据库中,该数据库具有自动递增的标识列:

CREATE TABLE [dbo].[tContacts] (
[conIdContact] [int] IDENTITY (1, 1) NOT NULL ,
[conContactName] [varchar] (100) NOT NULL , ...
我正在使用中描述的“身份策略”

导致以下例外情况: 内部异常:com.microsoft.sqlserver.jdbc.SQLServerException:Ein解释您的身份是否存在于联系人表中,请在festgelegt列表中插入auf。 错误代码:544

抱歉,这是德语,但它告诉我们,只要将identity_INSERT设置为OFF(默认设置),就不能在identity列中插入任何值

我假设SQLServer想要自己创建ID,所以EclipseLink不喜欢在这里插入一个值:null到ID列中。 所有其他的策略,或者完全忽略产生的价值策略,都会产生相同的结果。 到目前为止,我还没有找到让EclipseLink向这个表中插入记录的方法! 将IDENTITY INSERT设置为ON不是可行的解决方案,因为标准用户不应有修改表的权限。 在Hibernate中映射这个表是很简单的,所以我很惊讶,在EclipseLink中这似乎是不可能的。下面是我在Hibernate中的做法:

        <id name="id" type="int">
        <column name="conIdContact" />
        <generator class="assigned" />
    </id>
我被困住了,我很感激任何关于这里出了什么问题的想法! 汉内斯

@克丽丝:我就是这样坚持的: con.setNametestheini_2; em.getTransaction.begin; em.persiscon; em.getTransaction.commit; 确实使用了contact-orm.xml文件,我一添加输入错误就可以看到它。 我还补充说 属性名称=eclipselink.target-database值=SQLServer 或 property name=eclipselink.target-database value=org.eclipse.persistence.platform.database.SQLServerPlatform 到persistence.xml,但没有任何区别。 我还能查什么?
Hannes

您如何持久化此实体,是否确定已拾取带有生成值标记的orm文件?您可以检查是否没有其他旧文件会在以某种方式拾取的路径上发生冲突,因为IDENTITY似乎在EclipseLink夜间测试中起作用,并最终在本文中起作用:@Chris-您是否尝试过像示例中那样使用注释或映射文件?我刚刚验证了IDENTITY可以用于注释,但不能用于映射文件。我想这是一个错误。如果你有一个简单的测试用例,一个错误是一个好主意,但在此之前,我会打开日志并检查是否遗漏了可能指示出错的警告消息。@Chris,FINER上有一个异常,但它会继续运行并最终生成导致错误的SQL。[EL Finer]:无法初始化验证工厂。遇到以下异常:java.lang.NoClassDefFoundError:javax/validation/validation。我想我会提交一个bug。
Call: INSERT INTO tContacts (conIdContact, ConContactName, ...
VALUES (?, ?, ...
bind => [null, testheini_2, ...
        <id name="id" type="int">
        <column name="conIdContact" />
        <generator class="assigned" />
    </id>