Я делаю соединение один к одному, чтобы получить результат с помощью аннотации. У меня есть два класса: первый - T_ARM_Details, а второй - ARM_Ticket_Details и T_ARM_Alert_Type. Я выполняю соединение один в один с использованием аннотации, но соединение не происходит и извлекает данные из одной таблицы
package com.cts.met.bo;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity
@Table(name="T_ARM_Details")
public class ARM_Ticket_Details implements Serializable {
@Id
@Column(name="ticket_id")
String Ticket_id;
@Column(name="arm_alert_type_id")
int arm_alert_type_id;
/*@ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name="T_arm_alert_type",joinColumns=@JoinColumn(name="arm_alert_type_id",referencedColumnName="arm_alert_type_id"),inverseJoinColumns=@JoinColumn(name= "response_status_id"))*/
public int getArm_alert_type_id() {
return arm_alert_type_id;
}
public void setArm_alert_type_id(int arm_alert_type_id) {
this.arm_alert_type_id = arm_alert_type_id;
}
private T_ARM_Alert_Type t_arm_alert_type;
//private T_SLA_Status t_sla_statuse;
public String getTicket_id() {
return Ticket_id;
}
public void setTicket_id(String ticket_id) {
Ticket_id = ticket_id;
}
@OneToOne(fetch=FetchType.LAZY,mappedBy="ARM_Ticket_Details",
cascade=CascadeType.ALL)
@JoinTable(name="T_arm_alert_type",
joinColumns=@JoinColumn(name="arm_alert_type_id"))//,
referencedColumnName="arm_alert_type_id"))
//@JoinColumn(name="arm_alert_type_id")
public T_ARM_Alert_Type getT_arm_alert_type() {
return t_arm_alert_type;
}
public void setT_arm_alert_type(T_ARM_Alert_Type t_arm_alert_type) {
this.t_arm_alert_type = t_arm_alert_type;
}
/*@ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name="T_sla_status",
joinColumns=@JoinColumn(name="resolution_status_id")//,
//inverseJoinColumns=@JoinColumn(name= "response_status_id")
)
//@JoinColumn(name="status_id")
*/
/*public T_SLA_Status getT_sla_statuse() {
return t_sla_statuse;
}
public void setT_sla_statuse(T_SLA_Status t_sla_statuse) {
this.t_sla_statuse = t_sla_statuse;
}*/
}
А следующий следующий:
package com.cts.met.bo;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@SuppressWarnings("serial")
@Entity
@Table(name="T_arm_alert_type")
public class T_ARM_Alert_Type implements Serializable{
@Id
//@OneToOne(targetEntity=ARM_Ticket_Details.class,cascade=CascadeType.ALL)
//@JoinColumn(name="arm_alert_type_id",referencedColumnName="arm_alert_type_
id")
/*@OneToOne(fetch=FetchType.LAZY)
@PrimaryKeyJoinColumn*/
//@JoinColumn(name="arm_alert_type_id")
int arm_alert_type_id;
@Column(name="arm_alert_desc")
String arm_alert_desc;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ticket_id")
private ARM_Ticket_Details arm;
public ARM_Ticket_Details getArm() {
return arm;
}
public void setArm(ARM_Ticket_Details arm) {
this.arm = arm;
}
public int getArm_alert_type_id() {
return arm_alert_type_id;
}
public void setArm_alert_type_id(int arm_alert_type_id) {
this.arm_alert_type_id = arm_alert_type_id;
}
public String getArm_alert_desc() {
return arm_alert_desc;
}
public void setArm_alert_desc(String arm_alert_desc) {
this.arm_alert_desc = arm_alert_desc;
}
}
Мой контроллер выглядит так:
@RequestMapping(value = "/editTicket", method = RequestMethod.GET)
public ModelAndView editTicket(HttpServletRequest request){
String TicketId = request.getParameter("id");
ARM_Ticket_Details ticket = pmportalService.getARMTicketById(TicketId);
ModelAndView model = new ModelAndView("editTicket");
model.addObject("ticket", ticket);
return model;
}
Я ожидаю, что здесь произойдет соединение, но оно выдает следующую ошибку:
select
arm_ticket0_.ticket_id as ticket_i1_1_0_,
arm_ticket0_.arm_alert_type_id as arm_aler2_1_0_,
arm_ticket0_.t_arm_alert_type as t_arm_al3_1_0_
from
T_ARM_Details arm_ticket0_
where
arm_ticket0_.ticket_id=?
Может кто-нибудь помочь, пожалуйста? Кстати, я новичок в спящем режиме.