我正在使用spring jpa,并已将以下实体Map到h2数据库字段:
@Entity
@Table(name = "REQUEST")
public class Request implements Serializable {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "CORR_ID")
private String corrId;
@Column(name = "CB_DATE")
private LocalDate cbDate;
@Column(name = "ACTIVE")
private boolean active;
@Column(name = "CREATED_DATE")
private LocalDate createdDate;
@Column(name = "LAST_UPDATED")
private LocalDateTime lastUpdated;
}
-- H2 DB Script
CREATE TABLE REQUEST
(
ID BIGINT AUTO_INCREMENT PRIMARY KEY,
CORR_ID CHAR(36) NOT NULL,
CB_DATE DATE NOT NULL,
ACTIVE BOOLEAN DEFAULT FALSE NOT NULL,
CREATED_DATE DATE NOT NULL,
LAST_UPDATED DATETIME NOT NULL
);
我不确定以下sql server列定义是否正确Map到java。我看到了 BIT
Map到 boolean
java类型,但是,我不确定 Date
& DateTime
将正确Map到 LocalDate
& LocalDateTime
分别。
--MS SQL SEVER SCRIPT
CREATE TABLE REQUEST
(
ID BIGINT AUTO_INCREMENT PRIMARY KEY,
CORR_ID CHAR(36) NOT NULL,
CB_DATE DATE NOT NULL,
ACTIVE BIT DEFAULT FALSE NOT NULL,
CREATED_DATE DATE NOT NULL,
LAST_UPDATED DATETIME NOT NULL
);
请澄清一下。我需要对我的java代码进行任何调整吗?我的sql server定义是否正确?
在使用jpa保存之前,我正在进行转换:
re.setIsActive(tt.isActive());
re.setCbDate(LocalDate.parse(tt.getCobDate()));
re.setCreatedDate(LocalDate.now());
1条答案
按热度按时间p1tboqfb1#
我猜sql server本身的版本、sql server jdbc驱动程序和使用的hibernate方言在这里起着决定sql server端哪些类型是正确的或可接受的作用。
变量太多了,不能说什么。我会让hibernate创建表并查看它生成了什么。您需要确定必须支持哪个sql server版本。基于这一点,我将选择最好的方言和jdbc驱动程序,然后再次查看hibernate将在这个设置中生成什么,并将其作为正确的类型。