[英]Hibernate annotations one-to-many
I can't add any records to my WorkOrder table. 我无法将任何记录添加到我的WorkOrder表中。 It adds records to Company table and Handyman table.
它将记录添加到公司表和勤杂工表。 Probably something wrong with my annotations.
我的注释可能出了点问题。 Is there any mistakes?
有没有错误?
I have 3 tables. 我有3张桌子。
1 Company table, contains names of companies, addresses, phone numbers, etc. 1公司表,包含公司名称,地址,电话号码等。
2 Handyman table, handyman name, address, hourly rate, etc. 2勤杂工表,勤杂工姓名,地址,小时费率等。
3 WorkOrders, work order number, job site address, 3个工作订单,工作订单编号,工作地点地址,
Tables Company and WorkOrders are linked through a foreign key in one-to-many association Tables Handyman and WorkOrders are linked through a foreign key in one-to-many association Tables Company和WorkOrders通过一对多关联中的外键链接Tables Handyman和WorkOrders通过一对多关联中的外键链接
WorkOrder.java WorkOrder.java
@Entity
@Table(name="Work_orders", schema="handyman")
public class WorkOrder implements Serializable {
// id, Work_order, Address, Email, Comment, Date_received, Price,
Companys_list_id, Handymans_list_id
@ManyToOne
@JoinColumn(name="Companys_list_id", referencedColumnName="id")
private Company company;
@ManyToOne(optional=false)
@JoinColumn(name="Handymans_list_id", referencedColumnName="id")
private Handyman handyman;
Company.java 公司.java
@Entity
@Table(name="Companys_list", schema="handyman")
public class Company implements Serializable {
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="Companys_list_id")
private Set<WorkOrder> workOrders;
Handyman.java 杂工
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="Handymans_list_id")
private Set<WorkOrder> workOrders;
Here's my JSP file: 这是我的JSP文件:
<s:form action="saveWorkOrder">
<s:actionerror/>
<s:textfield name="workOrder.workOrder" label="Work order number" />
<s:textfield name="workOrder.address" label="Adress/Location" />
<s:textfield name="workOrder.email" label="Email" />
<s:textfield name="workOrder.comment" label="Comment" />
<s:textfield name="workOrder.dateReceived" label="Date receved" />
<s:textfield name="workOrder.price" label="Price" />
<s:textfield name="company.companyName" label="Company name" />
<s:textfield name="handyman.handymanName" label="Handyman name" />
<s:submit value="Register" />
</s:form>
WorkOrderManagment.java WorkOrderManagment.java
public String saveWorkOrder(WorkOrder workOrder) throws Exception
{
System.out.println("Saving work order...");
WorkOrderDaoHibernate dao = new WorkOrderDaoHibernate();
workOrder = dao.saveWorkOrder(workOrder);
return SUCCESS;
}
WorkOrderDaoHibernate.java WorkOrderDaoHibernate.java
public WorkOrder saveWorkOrder(WorkOrder workOrder)
{
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
Transaction trans = session.beginTransaction();
Integer id = (Integer) session.save(workOrder);
trans.commit();
workOrder.setId(id);
session.close();
return workOrder;
}
由于公司和杂工pojos定义了与工单的一对多关系,并且还对所有工种进行了级联设置,因此更好的解决方案是:1.创建公司的对象,设置值和工单对象的集合2.创建杂工的对象,设置值和工作订单对象的集合。3.打开会话并将1和2批量保存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.