2015-11-13 4 views
0

У меня есть Entity и класс оболочки. Класс-оболочка делает все операции, такие как создание, удаление и поиск по Entity Bean, как показано нижеejb3 Распространение транзакций с помощью методов запросов поиска

@Entity 
@Table(name="student_info") 
@NamedQueries({ 
@NamedQuery(name = "findByName", query = " SELECT DISTINCT o FROM StudentBean o WHERE o.studentName = ?1 ") }) 
public class StudentBean implements Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

@Id 
@Column(name="student_id") 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private int studentId; 

@Column(name="student_name") 
private String studentName; 

public StudentBean() { 
} 

public StudentBean(String name) { 
    setStudentName(name); 
} 

public int getStudentId() { 
    return this.studentId; 
} 

public void setStudentId(int studentId) { 
    this.studentId = studentId; 
} 

public String getStudentName(){ 
    return this.studentName; 
} 

public void setStudentName(String studentName){ 
    this.studentName=studentName; 
} 
} 

А класс Wrapper

@Stateless 
public class StudentClient implements StudentClientLocal { 

@PersistenceContext 
private EntityManager em; 

@Override 
public StudentBean create(String name) { 
    StudentBean bean = new StudentBean(name); 
    em.persist(bean); 
    return bean;  
} 

@Override 
@TransactionAttribute(TransactionAttributeType.SUPPORTS) 
public StudentBean findByName(java.lang.String studentName) { 
    Query query = em.createNamedQuery("findByName"); 
    query.setParameter(1, studentName); 
    return (StudentBean) query.getSingleResult(); 
} 

@Override 
public void remove(StudentBean bean) { 
    em.remove(bean);  
} 
} 

И теперь с помощью класса диспетчера, я проверяю повторяющиеся имена студентов, и если не дублируя его в таблицу сущности учащихся.

@Stateless 
@Local 
public class StudentManager implements StudentManagerLocal { 

@Resource 
private SessionContext context; 

private static StudentClientLocal StudentClientLocal; 

public StudentManager() { 
    try { 
     Context context1 = new InitialContext(); 
     StudentClientLocal = (StudentClientLocal) context1 
       .lookup("StudentClient/local"); 
    } catch (Exception e) { 
    } 
} 
@Override 
public boolean addStudentAndGroup(StudentBean student, 
     StudentGroupBean group) { 
    if (student != null) { 
     try { 
      if(StudentClientLocal.findByName(student.getStudentName()) != null){ 
       System.out.println("Studnet name exists"); 
       return false; 
      } 
     } catch (Exception e) { 
     } 
     try { 
      StudentClientLocal.create(student.getStudentName()); 
     } catch (Exception e) { 
      throw e; 
     } 
} 
} 

Приведенный выше случай был исключен.

javax.ejb.EJBTransactionRolledbackException: EntityManager must be access within a transaction 
org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115) 
org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130) 
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:219) 
org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261) 
org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101) 
$Proxy122.create(Unknown Source) 
studentejb.StudentManager.addStudentAndGroup(StudentManager.java:64) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111) 
org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69) 
org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73) 
org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72) 
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_26624628.invoke(InvocationContextInterceptor_z_fillMethod_26624628.java) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88) 
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_26624628.invoke(InvocationContextInterceptor_z_setup_26624628.java) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) 
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:219) 
org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261) 
org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101) 
$Proxy128.addStudentAndGroup(Unknown Source) 
api.GroupManager.addStudentAndGroup(GroupManager.java:31) 
com.student.controller.ManageStudentServlet.doPost(ManageStudentServlet.java:81) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
root casue: 
javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction 
org.jboss.jpa.deployment.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.java:155) 
org.jboss.jpa.tx.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:186) 
interfaces.StudentClient.create(StudentClient.java:25) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111) 
org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69) 
org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73) 
org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72) 
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_26624628.invoke(InvocationContextInterceptor_z_fillMethod_26624628.java) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88) 
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_26624628.invoke(InvocationContextInterceptor_z_setup_26624628.java) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126) 
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:219) 
org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261) 
org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101) 
$Proxy122.create(Unknown Source) 
studentejb.StudentManager.addStudentAndGroup(StudentManager.java:64) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111) 
org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69) 
org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73) 
org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72) 
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_26624628.invoke(InvocationContextInterceptor_z_fillMethod_26624628.java) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88) 
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_26624628.invoke(InvocationContextInterceptor_z_setup_26624628.java) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) 
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67) 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:219) 
org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261) 
org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101) 
$Proxy128.addStudentAndGroup(Unknown Source) 
api.GroupManager.addStudentAndGroup(GroupManager.java:31) 
com.student.controller.ManageStudentServlet.doPost(ManageStudentServlet.java:81) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 

Если я аннотировал метод поиска с атрибутом транзакции REQUIRED_NEW, НИКОГДА. Никаких исключений не было.

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public StudentBean findByName(java.lang.String studentName) { 
    Query query = em.createNamedQuery("findByName"); 
    query.setParameter(1, studentName); 
    return (StudentBean) query.getSingleResult(); 
} 

Не могли бы рассказать о входах. почему транзакция не распространяется через метод поиска. Связана ли транзакция с управляемым или удаленным объектом метода поиска?

ответ

0

Исключение из метода поиска вызывает проблему. Он запускается после того, как я обрабатываю исключение в методе поиска, как показано ниже.

public StudentBean findByName(java.lang.String studentName) { 
    Query query = em.createNamedQuery("findByName"); 
    query.setParameter(1, studentName); 
    try { 
    return (StudentBean) query.getSingleResult(); 
    } catch (NoResultException e){ 
     return null; 
    } 
}