내 시나리오는 템플릿, 질문 및 선택 테이블이 3 개 있습니다.최대 절전 모드로 여러 테이블에 레코드 삽입
여기 템플릿에는 많은 질문이 있고 질문에는 선택 사항이 많으며 선택 필드에는 기타 입력란이 있습니다.
Struts2에서 단일 양식을 사용하여 레코드를 삽입합니다. 내 질문은 최대 절전 모드에서 구성하는 방법 ???
감사합니다 !!!
@Entity
@Table(name="template")
public class Template {
@javax.persistence.Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="t_id")
private Integer Id;
private String temp;
@OneToMany(targetEntity=Question.class, cascade=CascadeType.ALL)
@JoinColumn(name="tempId", referencedColumnName="t_id")
private Set<Question> question;
//getter setter
}
@Entity
@Table(name="question")
public class Question {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="Qid")
private Integer Qid;
private String question;
@ManyToOne
@JoinColumn(name="tempid")
private Template template;
@OneToMany(targetEntity=Choice.class, cascade=CascadeType.ALL)
@JoinColumn(name="qid", referencedColumnName="Qid")
private Set<Choice> choice;
//getter setter
}
@Entity
@Table(name="choice")
public class Choice {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer Id;
private String choice;
private String status;
private String description;
@ManyToOne
@JoinColumn(name="qid")
private Question question;
//getter setter
}
************ 제어기 *****************
public class UserController extends ActionSupport implements ServletRequestAware{
HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request =request;
}
Dao dao = new Dao();
Template template = new Template();
Question question = new Question();
Choice choice = new Choice();
public Choice getChoice() {
return choice;
}
public void setChoice(Choice choice) {
this.choice = choice;
}
public Question getQuestion() {
return question;
}
public void setQuestion(Question question) {
this.question = question;
}
public Template getTemplate() {
return template;
}
public void setTemplate(Template template) {
this.template = template;
}
public String insert(){
System.out.println(choice);
SessionFactory sf = Dbutil.getConnection();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Choice ch1 = new Choice();
ch1.setChoice(choice.getChoice());
ch1.setStatus(choice.getStatus());
ch1.setDescription(choice.getDescription());
Set<Choice> chset = new HashSet<Choice>();
chset.add(choice);
Set<Question> qns = new HashSet<Question>();
qns.add(question);
Question q = new Question();
q.setQuestion(question.getQuestion());
q.setChoice(chset);
Template t = new Template();
t.setTemplate(template.getTemplate());
t.setQuestion(qns);
dao.insertemplate(t,q, ch1);
//session.save(t);
//session.save(q);
//session.save(ch1);
tx.commit();
session.flush();
return "success";
}
}
****** ************* DAO ******************
public class Dao {
public void insertemplateT(Template template, Question qn1, Choice ch1){
SessionFactory sf = Dbutil.getConnection();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
if(ch1!=null){
insertChoice(ch1);
if(qn1!=null){
insertQuestion(qn1);
if(template !=null){
session.save(template);
tx.commit();
}
}
}
}
public void insertQuestion(Question qn1) {
SessionFactory sf = Dbutil.getConnection();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
session.save(qn1);
tx.commit();
}
public void insertChoice(Choice ch1) {
SessionFactory sf = Dbutil.getConnection();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
session.save(ch1);
tx.commit();
System.out.println("committed");
}
}
*********** sql show ************
최대 절전 모드 : 선택 사항으로 삽입 (선택, 설명, 질문, 대답최대 절전 모드 : 질문 (질문, 임시 값) 값 (?,? ?,?,?) 최대 절전 모드 : 업데이트 선택 설정 qid =? 여기서 Id =? 최대 절전 모드 : 템플릿 (임시) 값 (?)에 삽입 최대 절전 모드 : 질문 (질문, 임시 값) 값 (?,?) 삽입 최대 절전 모드 : 질문 집합 업데이트 tempId =? 여기서 Qid =? 많은 매핑
****** 질문 테이블 이미지 ******
하나를 사용. –
1 to n을 사용하는 동안 질문 테이블에 중복 삽입이 발생하는 이유는 무엇입니까? – prabhakaran
노력하고있는 것을보아야합니다. –