我正在使用Spring Boot Starter数据Jpa(2.1.9版本),并尝试映射此表:
CREATE TABLE `foo` (
`id` int(11) NOT NULL,
`woo` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
实体映射如下:
@Entity
@Table(name = "foo")
public class Foo {
@Id
@Column(name = "id")
private Integer id;
@Column(name = "woo")
private Integer woo;
public Integer getId() {
return id;
}
public Integer getWoo() {
return woo;
}
}
启动应用程序时,出现以下错误:
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [woo] in table [foo]; found [tinyint (Types#TINYINT)], but expecting [integer (Types#INTEGER)]
我的财产是:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///test
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=validate
我尝试使用vanilla Jpa和Hibernate(不由Spring管理)进行相同的映射,它工作正常。
有人能给我指出正确的方向吗?
这里有一个maven项目的链接,以防有人想直接尝试。
您可能需要使用显式类型声明覆盖默认的JDBC类型Hibernate:
@Column(name = "woo", columnDefinition = "TINYINT(4)")
private Integer woo;
这应该可以修复。
JDBC tinyint等效的Java类型是Byte。这是hibernate文档。数据类型映射
如果您使用eclipse/STS直接从表中生成实体而不存在数据类型冲突,JBoss工具将非常有用。
您的数据库正在使用TinyInt,而您的类正在使其预期为整数。然而,TinyInt映射到byte,这就是混淆的地方。
@Column(name = "woo")
private Byte woo;
可以在此处找到映射类型的参考。
我只是尝试在数据库中创建post api,但它不起作用,并给出了一个错误: 错误:关系“客户”的“first_name”列中的空值违反了非空约束详细信息:失败的行包含(24,0, null, null,tttt@gmail.com, null, f)。 这是我的API: 这是我的客户模型: 这是JPA存储库,我在postman中测试了它们: 邮递员测试
如标题所示,如果“模型”不完整,我所要做的就是返回一个自定义错误集合。 虽然我在积极地“搜索/谷歌”,但我还没有找到解决问题的办法。 我可以使用“modelstate”,但是由于“定制”,我想手动这样做。 代码如下: null null 基于自定义属性查找不完整的属性 属性样本 所以忽略后面的两个片段,更多的是给出一个完整的流程概述。我完全理解有一些“开箱即用”的技术,但我确实喜欢创建自己的实现。
下面是我的Spring boot Rest API应用程序。 vendor.java vendorRepository.java 不过,我还是得到了一个错误: 这个错误是什么?如何化解?
我收到以下错误: 无法执行查询;SQL [select DFBOGARM,sum(KVANTUM1) as KVANTUM1,(sum(dst omk)* 1000/sum(KVANTUM1))as dst omk,(sum(dst akk)* 1000/sum(KVANTUMAKK))as dst akk from nho data。ERHDSTV1其中DFS val in(52,55)grou
在尝试创建一对多(以及多对一)关系时,我遇到以下错误: 以下是完整的故事。目前在这些课程中,我有以下几点: LoginUser.java 用户角色。JAVA 用户角色存储。JAVA 开始atabase.java 我得到的全部错误是: 我不完全确定在哪里或为什么它试图找到一个属性的id时,我显然已经设置了所有类型的UserRole。
有两个表。酒店内的地址。我已经提到了OneTo很多关系。但是编译器抛出错误。 创建名为entityManagerFactory的bean时出错,该bean在类路径资源[org/springFramework/boot/autoconfiure/orm/jpa/HibernateJpaConfiguration.class]中定义:调用init方法失败;嵌套异常org.hibernate.Mappi