spring jpa实体将localdate和localdatetime字段Map到sqlserver

eblbsuwk  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(540)

我正在使用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());
p1tboqfb

p1tboqfb1#

我猜sql server本身的版本、sql server jdbc驱动程序和使用的hibernate方言在这里起着决定sql server端哪些类型是正确的或可接受的作用。
变量太多了,不能说什么。我会让hibernate创建表并查看它生成了什么。您需要确定必须支持哪个sql server版本。基于这一点,我将选择最好的方言和jdbc驱动程序,然后再次查看hibernate将在这个设置中生成什么,并将其作为正确的类型。

相关问题