java - Java-Oracle - 无法创建特定表
问题描述
我总是得到错误 java.sql.SQLSyntaxErrorException: ORA-00904: : invalid identifier 和 java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist when created table。这是我的一些桌子
package com.domibowo.salestracking.models;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(schema = "SALES_TRACKING", name="CUSTOMER")
public class Customer {
@Id
@GeneratedValue(generator = "seq", strategy= GenerationType.SEQUENCE)
@SequenceGenerator(name="seq", sequenceName = "SEQ1")
private Long id;
@Column(name="citizen_id")
private Long citizenId;
@Column(name = "full_name")
private String fullName;
@Column(name = "address")
private String address;
@Column(name="city")
private String city;
@ManyToOne
@JoinColumn(name="region_id")
@JsonIgnoreProperties(value = {"salesList","customerList"})
private Region region;
@Transient
private Long regionId;
@OneToMany(mappedBy = "customer")
private List<Details> details;
public Customer() {
}
public Customer(Long id, Long citizenId, String fullName, String address, String city, Region region, Long regionId, List<Details> details) {
this.id = id;
this.citizenId = citizenId;
this.fullName = fullName;
this.address = address;
this.city = city;
this.region = region;
this.regionId = regionId;
this.details = details;
}
public Long getId() {
return id;
}
public Long getCitizenId() {
return citizenId;
}
public void setCitizenId(Long citizen_id) {
this.citizenId = citizen_id;
}
public String getFullName() {
return fullName;
}
public void setFullName(String full_name) {
this.fullName = full_name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Region getRegion() {
return region;
}
public void setRegion(Region region) {
this.region = region;
}
public List<Details> getDetails() {
return details;
}
public void setDetails(List<Details> details) {
this.details = details;
}
public Long getRegionId() {
return regionId;
}
public void setRegionId(Long regionId) {
this.regionId = regionId;
}
}
产品表和其余部分能够毫无问题地创建。
但是这个,
package com.domibowo.salestracking.models;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.time.LocalDate;
@Entity
@Table(schema = "SALES_TRACKING",name="HISTORY")
public class History {
@Id
@GeneratedValue(generator = "seq", strategy= GenerationType.SEQUENCE)
@SequenceGenerator(name="seq", sequenceName = "SEQ1")
private Long id;
@ManyToOne
@JoinColumn(name = "sales_id")
@JsonIgnoreProperties(value = {"region"})
private Sales sales;
@OneToOne
@JoinColumn(name = "details_id")
@JsonIgnoreProperties(value = {"history"})
private Details details;
@Column(name = "date")
@JsonFormat(pattern = "dd/MM/yyyy")
private LocalDate date;
@Column(name = "total")
private Double total;
@Transient
private Long detailsId;
@Transient
private Long salesId;
public History() {
}
public History(Long id, Sales sales, Long salesId, Details details, LocalDate date, Double total, Long detailsId) {
this.id = id;
this.sales = sales;
this.details = details;
this.date = date;
this.total = total;
this.detailsId = detailsId;
this.salesId = salesId;
}
public Long getDetailsId() {
return detailsId;
}
public void setDetailsId(Long detailsId) {
this.detailsId = detailsId;
}
public Long getId() {
return id;
}
public Sales getSales() {
return sales;
}
public void setSales(Sales sales) {
this.sales = sales;
}
public Details getDetails() {
return details;
}
public void setDetails(Details details) {
this.details = details;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
public Long getSalesId() {
return salesId;
}
public void setSalesId(Long salesId) {
this.salesId = salesId;
}
}
即使使用的生成器 ID 与其他生成器 ID 相同,在创建历史记录表时我总是会收到 ORA-00904 和 ORA-00942 错误。非常感谢任何帮助!
解决方案
即使在使用 Hibernate JPA 时,也不能忘记使用 Oracle 数据库,并且必须避免使用保留字作为列名。
因此,请查看所有列名,尤其是这一列
@Column(name = "date")
错误 ORA-00904invalid identifier
指向此方向。DATE
是保留字,不能用作列名。
第二个(ORA-00942 table or view does not exist
)是由于无法创建表而导致的后续消息。
推荐阅读
- r - r markdown latex 编译错误(未定义的颜色“灰色!6”)与 jtools 包中的功能
- xpath - 赛普拉斯无法识别 Xpath 功能
- android - 致命异常:Firebase-Messaging-Intent-Handle
- amazon-web-services - 如何使用 CloudFormation 或 CDK 将另一个 AWS 账户的事件总线指定为 EventBridge 规则的目标?
- python - 如何从 Python 中的数据框获取日期和生日的年龄列表?
- c++ - 从数组包中删除和插入一个元素。为什么是布尔数组而不是int?
- javascript - 道具不更新子组件
- reactjs - ReactJs:Date().toLocaleTimeString 不起作用
- java - 如何在 JTable 中显示从数据库中检索到的数据?
- c# - 将具有多个嵌套级别的任何 XML 读取到结构化表中以写入 Excel 的通用方法