처음에는 내가 무엇을하고 싶은지 알게 될 것입니다. 나중에 나에게 문제를 보여줄 것입니다.JPA JSF를 사용하여 일대일 관계로 데이터를 지속하는 방법 JSF
위의 화면 제목에서
및 설명는 AboutUs 법인에서하고 필드의 나머지는 GeneralImage 엔티티를위한 것입니다. 나는 두 기관에서 데이터를 유지하고 나는 아래의 코드를 작성했습니다이 작업을 수행하기 위해 서로
한 관계를 갖고 싶어 만들기 버튼을 클릭하면
지금 내가 무엇을 달성하고자하는 것은 어떤 문제가있는
AboutUs.java
package com.model;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.FetchType;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
@Entity
@NamedQuery(name = "AboutUs.findAboutUsByIdWithImages", query = "Select s from AboutUs s where
s.aboutusid = :aboutusid")
public class AboutUs implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int aboutusid;
private String aboutustitle;
private String description;
public static final String FIND_ABOUTUS_BY_ID_WITH_IMAGES =
"AboutUs.findAboutUsByIdWithImages";
@OneToOne(cascade=CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name = "imageid")
private GeneralImage image;
//Here Below I have Added Setters and Getters
……….
}
GeneralImage
@Entity
public class GeneralImage {
@Id
@GeneratedValue
private int imageid;
private String fileName;
private String categoryid;
private int orderofappearance;
private String mimetype;
private int filesize;
private int foreignkeyid;
@OneToOne(mappedBy="image", cascade=CascadeType.ALL)
private AboutUs aboutus;
//The Below Are The Setters and Getters
}
아래는 내가
public void createAboutus()
{
try
{
aboutus.setImage(generalImage); //Here I am adding the generalImage object to about so that
//it can be persisted
aboutusFacade.save(aboutus);
closeDialog();
displayInfoMessageToUser("Created With Success......!");
loadAboutus();
resetAboutus();
}
catch (Exception e)
{
keepDialogOpen();
displayErrorMessageToUser("OOPS, We Could Not Create...... Try Again Later......!");
e.printStackTrace();
}
}
나중에 외관 클래스 으로 저장 AboutUsMB 내 createAboutus()에서 AboutUsMB AboutUsMB 을 내 Facelets의 이미지
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:body>
<p:dialog widgetVar="aboutusCreateDialogWidget"
id="aboutusCreateDialogId" height="400" width="1000" modal="true"
closable="true" draggable="false" resizable="false" showEffect="puff" hideEffect="fold"
header="Create About Us">
<h:form id="aboutusCreateDialogForm" prependId="false">
<h:panelGrid columns="2">
<h:outputText value="* #{msgs.aboutustitle}" />
<h:inputText value="#{aboutUsMB.aboutus.aboutustitle}" required="true" label="#
{msgs.aboutustitle}" >
<f:validateLength minimum="4" />
</h:inputText>
<h:outputText value="* #{msgs.aboutusescription}" />
<h:inputText value="#{aboutUsMB.aboutus.description}" required="true" label="#
{msgs.aboutusescription}" />
<h:outputText value="* #{msgs.categoryName}" />
<h:inputText value="#{generalImageMB.generalImage.categoryid}" required="true"
label="#{msgs.categoryName}" />
<h:outputText value="* #{msgs.orderOfAppearance}" />
<h:inputText value="#{generalImageMB.generalImage.orderofappearance}" required="true"
label="#{msgs.orderOfAppearance}" />
<h:outputText value="* #{msgs.mimetype}" />
<h:inputText value="#{generalImageMB.generalImage.mimetype}" required="true" label="#
{msgs.mimetype}" />
<h:outputText value="* #{msgs.fileSize}" />
<h:inputText value="#{generalImageMB.generalImage.filesize}" required="true" label="#
{msgs.fileSize}" />
</h:panelGrid>
<h:panelGrid columns = "2">
<p:commandButton value="#{msgs.create}" icon="ui-icon-plus"
action="#{aboutUsMB.createAboutus()}"
update=":messageGrowl :aboutusForm:aboutusTable"
oncomplete="closeDialogIfSucess(xhr, status, args, aboutusCreateDialogWidget,
'aboutusCreateDialogId')"
/>
<p:commandButton value="#{msgs.cancel}" icon="ui-icon-cancel" actionListener="#
{aboutusMB.resetAboutus()}" onclick="aboutusCreateDialogWidget.hide();" type="button" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>
다음이다 방법,210 AboutUsFacade
public interface AboutUsFacade {
//The Below I Am Adding Methods So That I Can Deal With Addition, Deletion and Updation of Users
public abstract void save(AboutUs aboutus);
}
외관도 구현 클래스 AboutUsFacadeImp
public class AboutUsFacadeImp implements AboutUsFacade
{
@EJB
private AboutUsDAO aboutusDAO;
@Override
public void save(AboutUs aboutus)
{
aboutusDAO.save(aboutus);
}
}
GenericDAO 클래스
public abstract class GenericDAO<T>
{
private final static String UNIT_NAME = "SmartRealtorsPU";
@PersistenceContext(unitName = UNIT_NAME)
private EntityManager em;
private Class<T> entityClass;
public GenericDAO(Class<T> entityClass)
{
this.entityClass = entityClass;
}
public void save(T entity) {
em.persist(entity);
}
}
그래서 위의 코드를 사용하면 내가 가질 수 아니다 generalImage 데이터는 어디에 데이터가 u는 관계 분야 인 imageid이
그래서 씹는 담배의 한 조각 중 하나가 문제가 될 수 무슨를 해결 NULL 인 것을 알 수있다 또한 지속 된 경우에만 aboutus 지속하고 난 잘못이고 무엇
난 당신과 같은 문제를 가지고 문제
연구 결과가 없기 때문에 내가이 선정 된 이유를 이해하고 있지 않다 나는 지난 이틀 동안이 예제를 시도하고 있으며 많은 연구를 해왔다.이 질문에 답할 수있는 사람이 있는가? – Zaheer