Я могу обновить базу данных, так что для каждой секции пользователь сохраняет ее, она там хорошо работает, в правильном столбце базы данных, но то, что я сейчас пытаюсь достичь, вместо сохранения в новую строку, проверьте там studentNumber
, и если у нее уже есть запись в таблице (которая должна будет зайти так далеко), обновите колонки до этой записи, а не начните новую.Как объединить записи вместе
как я могу это сделать?
В настоящее время это мой код:
это u.i. где они выберите значение и нажмите отправить
<p:spinner id="ajaxspinner80-100" value="#{editMarkingBean.markSectionTwo.markSectionTwo}"
stepFactor="1" min="80" max="100" disabled="#{formBean.number != 8}">
<p:ajax update="ajaxspinnervalue" process="@this" />
</p:spinner>
кнопку СОХРАНИТЬ
<p:commandButton action="#{editMarkingBean.markSectionTwo}" value="#{bundle.buttonSave}" update=":growl" icon="ui-icon-disk"/>
подкладочный боб:
@Named(value = "editMarkingBean")
@ViewScoped
public class EditMarkingController {
private String searchString;
private String ordering;
private String criteria;
private String match;
private Date today;
private String caseMatch;
private int spinnerField;
private Marking markSectionOne;
private Marking studentNumber;
private Marking markSectionTwo;
private MarkingService markingService;
private Marking markToEdit;
@Inject
private MarkingFacade markingFacade;
@PostConstruct
public void init() {
//this.markToEdit = this.markingFacade.find(studentNumber);
this.markSectionTwo = new Marking();
}
public String markSectionTwo() {
this.markingFacade.edit(markSectionTwo);
this.setMessage("Mark Saved");
markSectionTwo = new Marking();
this.setMessage("Mark Saved");
// now navigating to the next page
return "/lecturer/marking/marking-section-three";
}
private void setMessage(String message) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.addMessage(null, new FacesMessage(message, ""));
}
public Marking getMarkSectionTwo() {
return markSectionTwo;
}
public void setMarkSectionTwo(Marking markSectionTwo) {
this.markSectionTwo = markSectionTwo;
}
public String getSearchString() {
return searchString;
}
public void setSearchString(String searchString) {
this.searchString = searchString;
}
public String getOrdering() {
return ordering;
}
public void setOrdering(String ordering) {
this.ordering = ordering;
}
public String getCriteria() {
return criteria;
}
public void setCriteria(String criteria) {
this.criteria = criteria;
}
public String getMatch() {
return match;
}
public void setMatch(String match) {
this.match = match;
}
public Date getToday() {
return today;
}
public void setToday(Date today) {
this.today = today;
}
public String getCaseMatch() {
return caseMatch;
}
public void setCaseMatch(String caseMatch) {
this.caseMatch = caseMatch;
}
public int getSpinnerField() {
return spinnerField;
}
public void setSpinnerField(int spinnerField) {
this.spinnerField = spinnerField;
}
public Marking getMarkSectionOne() {
return markSectionOne;
}
public void setMarkSectionOne(Marking markSectionOne) {
this.markSectionOne = markSectionOne;
}
public Marking getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(Marking studentNumber) {
this.studentNumber = studentNumber;
}
public MarkingService getMarkingService() {
return markingService;
}
public void setMarkingService(MarkingService markingService) {
this.markingService = markingService;
}
public MarkingFacade getMarkingFacade() {
return markingFacade;
}
public void setMarkingFacade(MarkingFacade markingFacade) {
this.markingFacade = markingFacade;
}
}
, но в настоящее время только добавляет новую строку с данными в базе данных вместо того, чтобы пытаться объединить его с данными, уже содержащимися в базе данных для учащегося с определенным номером студента
как я могу это достичь? спасибо, ребята за вашу помощь :)
EDIT:
Я пробовал:
private Marking markToEdit;
@Inject
private MarkingFacade markingFacade;
@PostConstruct
public void init() {
this.markToEdit = this.markingFacade.find(studentNumber);
//this.markSectionTwo = new Marking();
}
public String markSectionTwo() {
this.markingFacade.edit(markSectionTwo);
this.setMessage("Mark Saved");
// markSectionTwo = new Marking();
//this.setMessage("Mark Saved");
// now navigating to the next page
return "/lecturer/marking/marking-section-three";
}
но получаю ошибку:
exception
javax.servlet.ServletException: WELD-000049 Unable to invoke public void sws.control.EditMarkingController.init() on [email protected]
root cause
org.jboss.weld.exceptions.WeldException: WELD-000049 Unable to invoke public void sws.control.EditMarkingController.init() on [email protected]
root cause
java.lang.reflect.InvocationTargetException
root cause
javax.ejb.EJBException
root cause
java.lang.IllegalArgumentException: An instance of a null PK has been incorrectly provided for this find operation.
спасибо за код, это его в EJB, где вы проверить до слияния?, Так как я не уверен, как ваш на самом деле работает – user2061913
в методе saveDataSource() – Leo
Спасибо, я пытался получить он работает над моим кодом, но до сих пор мне не повезло, вы думаете, что можете показать мне, как запустить его на моем примере, случайно? – user2061913