我在获取H2 In Memory数据库以填充时遇到麻烦。这里的想法是拥有唯一的BuildingCode作为主键和id。
我发现了以下类级错误:
org.hibernate.tool.schema.spi.命令验收异常:通过JDBC语句执行DDL“更改表属性添加列building_codevarchar(255)not null”时出错
原因:org。h2。jdbc。JdbcSQLIntegrityConstraintViolationException:列“BUILDING_CODE”不允许为NULL;SQL语句:
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "Property")
public class Property {
@Id
@Column(name = "BuildingCode")
String id;
@Column(name = "Latitude")
Float latitude;
@Column(name = "Longitude")
Float longitude;
@Column(name = "BuildingName")
String buildingName;
@Column(name = "BuildAbr")
String buildAbr;
@Column(name = "Address")
String address;
@Column(name = "SquareFt")
Long squareFt;
@Column(name = "AssetId")
Long assetId;
public String getLatLong(){
return "[" + this.getLatitude() + "," + this.getLongitude() + "]";
}
}
表格创建和示例插入
CREATE TABLE Property(
Latitude NUMERIC(9,6) NOT NULL
,Longitude NUMERIC(10,6) NOT NULL
,BuildingCode VARCHAR(5) NOT NULL PRIMARY KEY
,BuildingName VARCHAR(42) NOT NULL
,BuildAbr VARCHAR(18) NOT NULL
,Address VARCHAR(42) NOT NULL
,SquareFt INTEGER
,AssetId INTEGER
);
INSERT INTO Property(Latitude,Longitude,BuildingCode,BuildingName,BuildAbr,Address,SquareFt,AssetId) VALUES (43.453696,-76.544895,'0006','Lanigan Hall','LANIGAN-6','some address',88200,1743);
这是我的申请表。属性
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url = jdbc:h2:mem:testdb:DB_CLOSE_ON_EXIT=FALSE
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.generate_statistics=false
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
在实体类中,您定义了驼峰式的列名,即BuildingCode,
@Id
@Column(name = "BuildingCode")
private String id;
这将使JPA在DB表中期待一个名为building_code的列,如果找不到,它将创建一个名为building_code的列,数据大小为varchar(255)且“NOTNULL”。
在插入查询中,它对BuildingCode列有值,但对新创建的building_code列没有值,因此错误-
**NULL not allowed for column "BUILDING_CODE"**
同样的情况也适用于其他骆驼壳柱,即。
BuildingName,
BuildAbr,
SquareFt,
AssetId
结论:如果您不希望JPA创建带有下划线的列,请不要在骆驼大小写的实体中提及列名。如果您按以下方式更改列定义,您的代码将起作用:
@Id
@Column(name = "Buildingcode") //change camel case to title case
private String id;
但是,相反,我建议在创建表和插入表脚本中简单地更改列名以具有下划线,如下所示:
sql prettyprint-override"> create table property(
latitude NUMERIC(9,6) NOT NULL,
longitude NUMERIC(10,6) NOT NULL,
building_code VARCHAR(5) NOT NULL PRIMARY KEY,
building_name VARCHAR(42) NOT NULL,
build_abr VARCHAR(18) NOT NULL,
address VARCHAR(42) NOT NULL,
square_ft INTEGER,
asset_id INTEGER
);
insert into property
( latitude,
longitude,
building_code,
building_name,
build_abr,
address,
square_ft,
asset_id)
values (43.453696,
-76.544895,
'0006',
'Lanigan Hall',
'LANIGAN-6',
'some address',
88200,
1743);
问题内容: 我是hibernate世界和面对的新手, 在hibernate5.2.9版本中运行独立程序时出现异常。但是在hibernate4版本中,我所有的代码都运行良好。我寻找了很多问题并解决了,但没有得到有效的答案。 配置文件 Pom.xml 实用文件 实体文件 主要方法 安慰 问题答案: 您应该尝试使用另一种方言,例如OR 或OR,以查看哪种方言适合您。 总而言之,您的当前方言正在creat
我想在springboot中通过H2创建表,但运行时出现以下错误:; 组织。冬眠地方话方言:hh000400:使用方言:org。冬眠地方话H2方言组织。冬眠工具模式。spi。CommandAcceptanceException:通过JDBC语句执行DDL“创建表bank_account(id bigint not null,balance double not null,full name var
我的模特 类型化 这是我的财产 错误 组织。冬眠工具模式。spi。CommandAcceptanceException:通过JDBC语句执行DDL“alter table vendeur add constraint FKovj5q276gfleu04t5gfjr3ayx外键(id_type_vente)引用type_de_vente(id)”时出错 这里所有的错误 请你帮帮我。提前谢谢你
也许我完全误解了应该如何工作,但除了返回错误之外,我似乎无法让它做任何事情。 我是这么做的: Mongod正在运行 我想备份一个名为“mydb”的数据库 我在mongo shell中 我尝试了命令并得到了上面的错误 我尝试了和,都有相同的问题 我在这里做错了什么?
我在集群模式下使用AWS ElastiCache(Redis)。我有两个实现来连接ElastiCache。其中一种实现是直接使用本机莴苣驱动程序,另一种是使用Spring数据,并将莴苣作为底层驱动程序。AWS ElastiCache具有群集配置endpoint。我想用这个endpoint连接到ElastiCache。我能够使用带有本机驱动程序实现的群集endpoint成功连接到ElastiCach
我使用的是带有AppCompatEditText的TextInputLayout,它为AppCompatEditText提供了一个基于xml形状的自定义背景。每当我设置一些错误,错误线从布局的开始。有没有办法给那个错误行做填充。