【发布时间】:2018-05-16 06:58:57
【问题描述】:
我已经创建了具有所有外键约束的数据库和所有表。但是当我运行 Spring Boot 应用程序休眠时抛出错误
无法对 JDBC 目标执行架构管理 [alter table tlp_client 添加约束 FKfd2km387c8s4oou769dmw5t94 外键 (u_frn_address_id) 引用 tlp_address (a_id)]
实体
@Entity
@Table(name = "tlp_client")
public class ClientModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "c_id")
private Long id;
@Column(name = "c_name")
private String name;
@Column(name = "c_description")
private String description;
@Column(name = "c_web_url")
private String webUrl;
@Column(name = "c_created_at")
private Calendar createdAt;
@Column(name = "c_is_active")
private Boolean isActive;
@OneToOne
@JoinColumn(name = "u_frn_created_by", referencedColumnName = "u_id")
private UserModel createdBy;
@OneToOne
@JoinColumn(name = "u_frn_address_id", referencedColumnName = "a_id")
private AddressModel address;
}
// getters and setters ...
}
ClientModel 的 SQL
create table tlp_client (
c_id INT(11) AUTO_INCREMENT,
c_name varchar(255) NOT NULL,
c_description varchar(255),
c_web_url varchar(255),
c_created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
c_is_active TINYINT(1) DEFAULT 1,
c_frn_created_by INT(11),
c_frn_address_id INT(11),
PRIMARY KEY (c_id),
FOREIGN KEY (c_frn_address_id) REFERENCES tlp_address (a_id),
FOREIGN KEY (c_frn_created_by) REFERENCES tlp_user (u_id)
);
AddressModel的SQL
create table tlp_address (
a_id INT(11) AUTO_INCREMENT,
a_address varchar(255),
a_city varchar(255),
a_state varchar(255),
a_country varchar(255),
a_zip varchar(8),
PRIMARY KEY (a_id)
);
我的问题是,我已经创建了所有的表,为什么 hibernate 还要尝试创建表?
application.properties
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dbName?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.pool.size=20
server.port=8090
更新
我通过在application.properties 中设置spring.jpa.hibernate.ddl-auto=validate 来运行应用程序,现在它正在抛出错误
架构验证:在 [a_id] 列中遇到错误的列类型 表[tlp_address];找到 [int (Types#INTEGER)],但期待 [bigint (Types#BIGINT)]
【问题讨论】:
标签: hibernate jpa spring-boot