我尝试从MSSQL Server 2016数据库中读取现有表。如果我进行验证(hbm2ddl.auto-->验证),我会收到一个“模式验证:缺少表”的异常。
我比较了生成的Hibernate SQL代码(如果我从验证切换到使用MSSQL Server本身可以生成的SQL代码进行更新)。它看起来是相同的:
-- generated SQL from Hibernate
create table Artikel (
Artnr int not null,
Artgruppe CHAR(5),
Bezeichnung VARCHAR(30) not null,
EPreis money,
primary key (Artnr)
)
-- generated SQL from MSSQL Server 2016
CREATE TABLE [dbo].[Artikel](
[Artnr] [int] NOT NULL,
[Bezeichnung] [varchar](30) NOT NULL,
[EPreis] [money] NULL,
[Artgruppe] [char](5) NULL,
PRIMARY KEY CLUSTERED
(
[Artnr] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Java模型如下:
@Entity
@Table(name = "Artikel")
public class Article {
@Id
@Column(name = "Artnr", nullable=true)
private int article_id;
@Column(name = "Bezeichnung", columnDefinition="VARCHAR(30)", nullable=false)
private String description;
@Column(name = "EPreis", columnDefinition = "money", nullable=true)
private BigDecimal price;
@Column(name = "Artgruppe", columnDefinition="CHAR(5)")
private String article_group;
// getters and setters
// ... not shown here
}
那么问题出在哪里呢?也许与货币类型有关?
谢谢和问候