Я хочу знать правильную установку аннотации JPA для обработки столбца IDENTITY MS Server 2008 R2.JPA аннотация для столбца IDENTITY MS SQL Server 2008 R2
MS Server 2008 R2 (окончательная первоначальная версия) не поддерживает SEQUENCE, но IDENTITY дает автоматический прирост, когда я тестировал raw sql.
Однако по JPA я не могу заставить его работать по какой-либо стратегии (IDENTITY, AUTO, TABLE) в аннотации @GeneratedValue, и мне не разрешено изменять схему БД, так как это другие. Я не пытался с SEQUENCE, потому что нет последовательности.
таблицы БД схемы
CREATE TABLE [dbo].[invoice_header](
[invoice_id] [int] IDENTITY(1,1) NOT NULL,
[ApprovalDate] [datetime] NULL,
[ApproverUserName] [nvarchar](50) NULL,
CONSTRAINT [PK_invoice_header] PRIMARY KEY CLUSTERED
(
[invoice_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
JPA Аннотация
@Entity
@Table(name = "invoice_header")
public class InvoiceHeader {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="invoice_id")
private Long invoiceId;
Спящий Ошибка
Hibernate: insert into tbl_acct_textura_invoice_header (invoice_id, ApprovalDate, ApproverUserName) values (null, ?, ?)
2015-06-16 11:12:24.149 ERROR 7157 --- [tp1024240671-18] o.h.engine.jdbc.spi.SqlExceptionHelper : DEFAULT or NULL are not allowed as explicit identity values.
It е из-за передачи null в Id. Я мог бы заставить HQL не включать столбец invoice_id во время вставки с помощью insertable = false и updatable = false в аннотации @Column, но затем hibernate не был рад, если не включить столбец Id, как показано ниже. Любое предложение? FYI, я использую JpaRepository пружинными данных
Hibernate ошибки, когда они не включают в себя столбец ID во вставке
nested exception is org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): ...InvoiceHeader
Поля базы данных IDENTITY должны использовать стратегию «IDENTITY», для чего она предназначена, и работает с DataNucleus, когда я это пробовал. Если Hibernate этого не делает, сообщите об ошибке в отношении них или найдите более новую версию. –
Благодарим вас за ваше предложение, но я обнаружил, что пропустил установочный диалект на LocalContainerEntityManagerFactoryBean –