使用hibernate 5如何在第一次执行时创建一个带有ROW的表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用hibernate 5如何在第一次执行时创建一个带有ROW的表?相关的知识,希望对你有一定的参考价值。

我想在表创建时插入一行,但Hibernate 5是成功创建表但不插入我给定的默认行,如下例所示,

我已经尝试过以下代码,

@Entity
public class FTPDomain {
@Id
private Long id=(long)1;

private String transferCroneTime="0 0 0 29 2 ?";

private String cleanCroneTime="0 0 0 29 2 ?";

//Setters & Getters
}

我也尝试过,

 @PrePersist
    public void prePersist() {
        if(id == null) id = (long)1;
        if(transferCroneTime == null) transferCroneTime ="0 0 0 29 2 ?";
        if(cleanCroneTime == null) cleanCroneTime = "0 0 0 29 2 ?"
    }

我希望当FTPDomain.java编译并执行第一次创建表时,其中id为1,transferCroneTime = 0 0 0 29 2?和cleanCroneTime = 0 0 0 29 2?在表中。

谢谢...

答案

@PrePersist和@PreUpdate是JPA事件监听器,用于在实体被持久化或更新之前修改实体状态,如评论中已经提到的那样。有关这些事件侦听器的正确用法,请参阅以下示例。

@PrePersist
public void prePersist() {
   creationDate = Localdatetime.now();
   updatedDate = Localdatetime.now();
} 

@PreUpdate
public void preUpdate() {
   updatedDate = Localdatetime.now();
} 

如果要将数据预填充到新创建的模式,则需要使用本文中描述的机制https://thoughts-on-java.org/standardized-schema-generation-data-loading-jpa-2-1/,您可以通过参数javax.persistence.sql-load-script-source在persistence.xml中对其进行配置。 ,它指向一个sql脚本,它通过insert语句将数据加载到您的数据库中。

还有一些特定于hibernate的属性提供与docs https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#_importing_script_files中描述的功能相同的功能,但我建议使用特定于JPA的属性。

以上是关于使用hibernate 5如何在第一次执行时创建一个带有ROW的表?的主要内容,如果未能解决你的问题,请参考以下文章

linux shell脚本执行命令时创建子进程问题(特定的情况,例如后台运行管道分支或子shell等,脚本可能会创建子进程执行命令)

linux shell脚本执行命令时创建子进程问题(特定的情况,例如后台运行管道分支或子shell等,脚本可能会创建子进程执行命令)

vim-latex:达到线宽时如何自动回车?

JS数据驱动的定时器开关(可暂停)

JOOQ 在调用 select() 时创建高逗号

如何使用 phpmyadmin 在存储过程中创建一段时间,错误 #1064