我有一个问题,就是Hibernate无法在表USERS上确定Set的类型。我试图通过一对多关系创建表INVOICES的外键。一位用户可以生成许多发票。我的User.java如下。
@Entity
@Table(name="USERS")
public class User {
@Id
@Column(name="User_Id",nullable=false)
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer user_id;
@Column(name="NAME")
private String name;
@Column(name="Address")
private String address;
@Column(name="Designation")
private String designation;
private Set<Invoice> invoices;
/*@OneToMany
@JoinColumn(name="Rec_Invoice_ID", nullable=false)
private Set<RecurringInvoice> recurring_invoices;*/
我正在尝试使用INVOICE-ID作为USERS表中的外键。我正在按照此处给出的说明进行
hibernate:一对多注释(外键)
@OneToMany
@JoinColumn(name="INVOICE_ID", nullable=false)
public Set<Invoice> getInvoices() {
return invoices;
}
public void setInvoices(Set<Invoice> invoices) {
this.invoices = invoices;
}
/* public Set<RecurringInvoice> getRecurring_invoices() {
return recurring_invoices;
}
public void setRecurring_invoices(Set<RecurringInvoice> recurring_invoices) {
this.recurring_invoices = recurring_invoices;
}
*/
// Getters and Setters
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
}
我的Invoice.java如下。
@Entity
@Table(name="INVOICES")
public class Invoice {
private Integer invoice_id;
@Column(name="Date_Created", nullable=false)
private Timestamp dateCreated;
@Column(name="DESCRIPTION")
private String description;
@Column(name="Total_Amount")
private Double totalAmount;
@Column(name="Tax_Amount")
private Double taxAmount;
@Column(name="Due_Date")
private Timestamp dueDate;
@Column(name="deleted")
private boolean deleted;
private InvoiceItemsDetails invoiceItemsDetails;
private Client client;
@OneToOne
@JoinColumn(name="ID", nullable=false)
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
public Date getDueDate() {
return dueDate;
}
public void setDueDate(Timestamp dueDate) {
this.dueDate = dueDate;
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="INVOICE_ID", nullable=false, insertable=false,updatable=false)
public Integer getInvoice_id() {
return invoice_id;
}
public void setInvoice_id(Integer invoice_id) {
this.invoice_id = invoice_id;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Timestamp dateCreated) {
this.dateCreated = dateCreated;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Double getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(Double totalAmount) {
this.totalAmount = totalAmount;
}
public Double getTaxAmount() {
return taxAmount;
}
public void setTaxAmount(Double taxAmount) {
this.taxAmount = taxAmount;
}
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
@OneToOne
@JoinColumn(name="Invoice_Item_Detail_id", nullable=false)
public InvoiceItemsDetails getInvoiceItemsDetails() {
return invoiceItemsDetails;
}
public void setInvoiceItemsDetails(InvoiceItemsDetails invoiceItemsDetails) {
this.invoiceItemsDetails = invoiceItemsDetails;
}
}
如果我没记错的话,Hibernate不允许您将注释与field /
getter混合使用。如果@Id
在字段上设置了注释,则所有映射都应遵循字段。尝试@OneToMany @JoinColumn(name="INVOICE_ID", nullable=false)
从getInvoices()
切换到。private Set<Invoice> invoices;
此模式也应应用于您的Invoice
班级
问题内容: 我将Hibernate用于项目中的所有CRUD操作。它不适用于一对多和多对一关系。它给了我下面的错误。 然后我又看了这个视频教程。一开始对我来说很简单。但是,我不能使其工作。现在也说 我在互联网上进行了一些搜索,有人告诉它Hibernate中的错误,有人说,通过添加@GenereatedValue可以清除此错误,但对我不起作用。 College.java 学生.java Main.ja
问题内容: 尽管这个问题问了很多遍,并且我已经使用了所有建议,但是仍然出现此错误。 User.java是 而Role.java是 这是我第一次尝试使用JPA进行hibernate注释。因此,任何建议都将非常有帮助。 对于hibernate,pom.xml的依赖项是: 我不知道这个错误。 谢谢。 问题答案: 解: Role.java与上面相同。
问题内容: 我正在将Hibernate用于项目中的所有CRUD操作。它不适用于一对多和多对一关系。它给了我下面的错误。 然后我再次看了这个视频教程。一开始对我来说很简单。但是,我无法使其工作。现在也说 我在互联网上进行了一些搜索,有人告诉它Hibernate中的错误,有人说,通过添加@GenereatedValue可以清除此错误,但对我不起作用。 Student.java Main.java: C
问题内容: 尽管这个问题问了很多遍,并且我已经使用了所有建议,但是仍然出现此错误。 User.java是 而Role.java是 这是我第一次尝试使用JPA进行休眠注释。因此,任何建议都将非常有帮助。 对于休眠状态,pom.xml的依赖项为: 我不知道这个错误。 谢谢。 问题答案: 解: Role.java与上面相同。
问题内容: 我正在使用Net Beans IDE,当我开始部署Web项目时,它在控制台输出中显示了一个错误,提示: 从消息中不能转换类型;我试图检查文件.hbm和.java中的类型,但到目前为止还算运气。 引发此错误的属性定义为 问题答案: 原因是,hibernate尝试转换类型,但是其中之一兼容 我的代码是这样的字符串 它应该用小写字母 似乎它区分大小写,并且在 hbm中 它应该是 字符串, 并
hbm xml文件: 例外情况: log4j:警告请正确初始化log4j系统。初始SessionFactory创建失败:org.hibernate.mappingException:无法确定:com.ds.supercar.model.places.location的类型,对于列:[org.hibernate.mapping.simplevalue.isvalid(simplevalue.isva