java - 默认列值在休眠中不起作用
问题描述
我使用注释在 Ben 中设置了“firm_name”默认值。但是当我插入数据时,它会添加NULL
到数据库中。我想将默认值设置到数据库中,以便我只设置所需的值。
其他列值设置为默认值,设置为 Bean。以下是我的代码。但它不起作用。我将在数据库中插入 nNULL 值。
@Entity
@Table(name = "my_leads")
public class My_leads{
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id")
int id;
@Column(name = "name", length = 100,columnDefinition = "varchar(255) default 'NA'")
String name;
@Column(name = "enrtyDate", insertable = false, updatable = false, nullable = false,columnDefinition = "datetime default NOW()")
Date enrtyDate;
@Column(name = "mobileNo", nullable = false, length = 100)
String mobileNo;
@Column(name = "firm_name", length = 100, nullable = false,columnDefinition = "varchar(255) default 'No Refrence'")
String firm_name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getEnrtyDate() {
return enrtyDate;
}
public void setEnrtyDate(Date enrtyDate) {
this.enrtyDate = enrtyDate;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public String getFirm_name() {
return firm_name;
}
public void setFirm_name(String firm_name) {
this.firm_name = firm_name;
}
}
My_Leads lead=new My_Leads();
lead.setUser(1);
lead.setMobileNo("1234567896");
lead.setName("Sajan");
lead.setPriority(1);
lead.setStage(1);
lead.setCampain(1);
adminService.SaveLead(lead)
解决方案
您编写的代码不是通过 Hibernate 设置默认值的方法 - 它实际上是用于数据库的。
当您在数据库中创建表时,您可以定义一个列,如果您尝试插入空值,则将插入默认值。这就是你在这里所做的varchar(255) default 'No Refrence'
。
如果您的表已经创建,Hibernate 将忽略该语句。该语句仅在 Hibernate 使用@Entity
类为您创建模式时使用。如果您进入数据库并检查列定义,您将看到您的列没有默认值,因为它不是由 Hibernate 创建的。
您可以删除您的架构并让 Hibernate 为您创建它,然后默认值将起作用。或者您可以手动编辑架构,将默认值添加到现有列。例如:
ALTER TABLE my_leads ALTER COLUMN firm_name SET DEFAULT 'No Refrence'
如果你让 Hibernate 生成你的模式并且仍然有这个错误 - 确保这些实际上是空值,而不是NULL
字符串或其他东西。
如果您不想让数据库插入默认值,而是通过 Hibernate,请在您的@Entity
类中执行此操作:
String firm_name = "No Refrence";
推荐阅读
- python - 如何对测试数据使用逻辑回归
- sql - 使用 where 子句从 Minioclient 查询 JSON 不起作用
- java - 使用java缩短URL
- python - 如何在 matplotlib 中以更高精度(或更多小数位)在 yaxis 上绘制值?
- excel - 更改聚合公式,输出#NUM
- docker - 如何使用 NGINX 入口控制器从 Cloudflare 恢复原始客户端 IP
- pagination - 在“搜索”连接上请求 500 条记录超出了 graphql 中 100 条记录的“第一”限制
- javascript - Jquery滚动到div的底部
- hyperledger-fabric - OCI 运行时执行失败:container_linux.go:344:启动容器进程导致“没有这样的文件或目录”:未知
- ruby-on-rails - 三元运算符中可能发生 Nil 取消引用