에서 엔티티를 지속하고 서블릿에서만들고 내가 만들고 서블릿에서 엔티티를 지속하기 위해 노력하고 서블릿
public void create(T entity) { getEntityManager().persist(entity); }
를 호출 할 때, 그건 내가 넣어지고있는 EJBException를 얻을 수있는 모든 EJB를위한 AbstractFacade의 방법을 생성한다. 이제이 메소드를 사용하여 상태 비 저장 EJB에서 엔티티를 만들고 유지하고 서블릿에서 호출하려고합니다.
public boolean createUser(JavaBean jb){}
.
좋은 생각이십니까? 엔티티를 만들고 유지하는 가장 좋은 방법은 무엇입니까? 즉, 사용자 계정을 만드시겠습니까?
도움 주셔서 감사합니다.
여기에 문제가 있습니다. 데이터베이스, member_details 및 주소의 두 테이블에 레코드를 만들고 싶습니다. 그들은 일대일 관계가 있습니다. 관계는 아직 데이터베이스의 외래 키에 의해 시행되지 않습니다. 두 테이블 모두 해당 엔티티 클래스가 있고 엔티티 클래스 Address에는 복합 기본 키를 나타내는 Embeddable 클래스 AddressPK가 있습니다. 일대일 관계는 엔티티에서 주소가 @ JoinColumn(name = "MEMBER_ID")
이고 주소가 @OneToOne(mappedBy = "memberId", cascade = CascadeType.ALL)
인 MemberDetails`에서만 적용됩니다. 이제는 JSP 형식의 데이터와 JavaBean을 다른 JSP로 설정합니다. 서블릿은 엔티티를 생성하고 주입 된 EJB를 호출하여 다음과 같이 유지합니다.
//get MemberBean from session object
MemberBean member = (MemberBean) request.getSession().getAttribute("user");
//create relevant entities and set attributes of entity classes
MemberDetails aMember = new MemberDetails("M3", firstName, middleName, lastName, dob, phoneNo,
member.getEmail(), gender, industryPosition, "Basic", musicInterests);
AddressPK addressId = new AddressPK(houseNo, postCode);
Address anAddress = new Address(addressId, street, county, town, country, aMember);
aMember.setAddress(anAddress);
if (memberDetails.find(aMember.getMemberId()) == null) {
//address.create(anAddress);
memberDetails.create(aMember);
}
else
{ System.out.println("User M3 Exists");}
//tests
memberDetails.displayMembers();
RequestDispatcher disp = request.getRequestDispatcher("WEB-INF/jsp/accounttype.jsp");
disp.forward(request, response);
일반 Java 응용 프로그램 클라이언트를 생성하고 명시 적 트랜잭션을 사용하여 이러한 세부 정보를 삽입하여 작동했습니다. 또한 주소를 주석 처리하고 MemberDetails 만 유지할 때도 작동합니다.
여기에 MemberDetails와 Address를 함께 삽입 할 때 예외가 있습니다.
WARNING : EJB5184는 : com.sun.ejb.containers시에 javax.ejb.EJBException : WARNING 공개 무효 beans.MemberDetailsFacade.create (entities.MemberDetails) 시스템 예외는 EJB MemberDetailsFacade, 메소드 호출시에 발생한 .BaseContainer.processSystemException (BaseContainer.java:5215) com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:5113) at com.sun.ejb.containers.BaseContainer.postInvokeTx (BaseContainer.java:4901)) at com.sun.ejb.containers.BaseContainer.postInvoke (BaseContainer.java:2045) at com.sun.ejb.containers.BaseContainer.postInvoke (BaseContainer.java:1994) at com.sun.ejb.containers .EJBLocalObjectInvocati onHandler.invoke (EJBLocalObjectInvocationHandler.java:222) com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke (EJBLocalObjectInvocationHandlerDelegate.java:89)에서 sun.proxy. $ Proxy233.create (알 수없는 소스) servlets.NewAccountFormHandler에서 에서 . doPost (NewAccountFormHandler.java:137) 에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:688) 에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:770) at org.apache. org.apache.catalina.core.StandardWrapper.service (StandardWrapper.java:1550) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve. java : 175) at org.apache.catalina .core.StandardPipeline.doInvoke (StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java) : 161) 에서 org.apache.catalina.connector.CoyoteAdapter.doService (CoyoteAdapter.java : 331) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper $ AdapterCallable.call (ContainerMapper.java:317) com.sun.grizzly.http.ProcessorTask.invokeAdapter에서 com.sun.enterprise.v3.services.impl.ContainerMapper.service (ContainerMapper.java:195) (ProcessorTask.java:860)이 com.sun에서 에서 . grizzly.http.ProcessorTask.doProcess (ProcessorTask.java:757) com.sun.grizzly.http.ProcessorTask.process (ProcessorTask.java:1056) at com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter. java : 229) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter (DefaultProtocolChain.java:137) at com.sun.grizzly.Defaul com.sun.grizzly.http.HttpProtocolChain.execute에서 com.sun.grizzly.DefaultProtocolChain.execute (DefaultProtocolChain.java:90) 에서 tProtocolChain.execute (DefaultProtocolChain.java:104) (HttpProtocolChain.java:79)에서 (ContextTask.java : com.sun.grizzly.ProtocolChainContextTask.doCall) 71) at com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork (AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:513) at java. lang.Thread.run (Thread.java:722) 에 의해 발생 : javax.validation.UnexpectedTypeException : HV000030 : entity.MemberDetails 유형의 유효성 검사기를 찾을 수 없습니다. ...
, 당신은 우리에게 예외의 스택 트레이스를 표시해야합니다 관련 코드 –
엔티티 만 유지하는 EJB를 정의 할 필요는 없습니다. 오류에 대한 자세한 내용을 표시하십시오 – gcvt
엔티티를 선언하고 있습니까? EJB로? –