Comment définir une entité pour le tableau suivant. J'ai quelque chose qui ne fonctionne pas et je veux juste voir ce que je suis censé faire.Configuration de l'incrémentation automatique 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,
[OptionStatusCd] [char](1) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
C'est ce que j'ai déjà qui ne fonctionne pas.
@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...
}
Je reçois les ST.
[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)
je ne veux pas Pour insérer dans l'identité, je veux que le champ s'auto-incrémente du côté DB. comment puis-je dire à hibernate de ne pas insérer/mettre à jour les valeurs de la colonne SeqNo? J'ai essayé updateable/insertable = false. ça ne marche pas. – dharga
ok, désolé pour la mauvaise compréhension, Juste une autre question, pouvez-vous juste faire un insert dans la base de données, sans spécifier le SeqNo? – rasata