Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠自动增量设置_Java_Sql Server 2005_Hibernate - Fatal编程技术网

Java 休眠自动增量设置

Java 休眠自动增量设置,java,sql-server-2005,hibernate,Java,Sql Server 2005,Hibernate,如何为下表定义实体。我有些东西不管用,我只是想看看我该怎么做 USE [BAMPI_TP_dev] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[MemberSelectedOptions]( [OptionId] [int] NOT NULL, [SeqNo] [smallint] IDENTITY(1,1) NOT NULL, [Option

如何为下表定义实体。我有些东西不管用,我只是想看看我该怎么做

USE [BAMPI_TP_dev]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MemberSelectedOptions](
    [OptionId] [int] NOT NULL,
[SeqNo] [smallint] IDENTITY(1,1) NOT NULL,
[OptionStatusCd] [char](1) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
这是我已经拥有的不起作用的东西

@Entity
@Table(schema="dbo", name="MemberSelectedOptions")
public class MemberSelectedOption extends BampiEntity implements Serializable {

    @Embeddable
    public static class MSOPK implements Serializable {
        private static final long serialVersionUID = 1L;

        @Column(name="OptionId")
        int optionId;

        @GeneratedValue(strategy=GenerationType.IDENTITY)
        @Column(name="SeqNo", unique=true, nullable=false)
        BigDecimal seqNo;

        //Getters and setters here...

}

    private static final long serialVersionUID = 1L;

    @EmbeddedId
    MSOPK pk = new MSOPK();

    @Column(name="OptionStatusCd")
    String optionStatusCd;

    //More Getters and setters here...
}
我得到了下面的圣

[5/25/10 15:49:40:221 EDT] 0000003d JDBCException E org.slf4j.impl.JCLLoggerAdapter error Cannot insert explicit value for identity column in table 'MemberSelectedOptions' when IDENTITY_INSERT is set to OFF.
[5/25/10 15:49:40:221 EDT] 0000003d AbstractFlush E org.slf4j.impl.JCLLoggerAdapter error Could not synchronize database state with session
                             org.hibernate.exception.SQLGrammarException: could not insert: [com.bob.proj.ws.model.MemberSelectedOption]
                             at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
                             at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
                             at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2285)
                             at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2678)
                             at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
                             at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
                             at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
                             at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
                             at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
                             at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
                             at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
                             at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
                             at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
                             at com.bcbst.bamp.ws.dao.MemberSelectedOptionDAOImpl.saveMemberSelectedOption(MemberSelectedOptionDAOImpl.java:143)
                             at com.bcbst.bamp.ws.common.AlertReminder.saveMemberSelectedOptions(AlertReminder.java:76)
                             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

您的问题似乎不是休眠问题:

也许您已经为SeqNo定义了一个值,然后试图保存它

或者在数据库的“设计”视图中,您应该确保将SeqNo列的IDENTITY属性设置为yes

您应该在代码之后执行以下命令:

设置标识\u插入dbo.MemberSelectedOptions 在


不能在复合键上使用生成器

我不想插入到标识中,我希望字段在DB端自动递增。如何告诉hibernate不要插入/更新SeqNo列的值?我尝试过updateable/insertable=false。那不行。好的,很抱歉误解了,再问一个问题,你能不能在数据库中插入一个,而不指定SeqNo?