2013-01-09 2 views
0

Java EE & JBoss7.1의 다중 테이블 (MySQL)에 데이터를 삽입하는 방법. 필자는 몇 가지 간단한 튜토리얼을 만들었지 만 이제는 하나의 테이블을 가진 빈 파일을 만들었고 데이터를 추가 한 파일 메서드에서 EntityManager에서 데이터를 추가했지만 지금은 관계가있는 많은 테이블을 사용하고 싶습니다. 내가 원하는 간단한 예제를 추가합니다.JavaEE JTA UserTransaction 여러 테이블에 데이터 삽입

구조 테이블 :

http://www73.zippyshare.com/v/48459839/file.html

내 테이블 (클래스) JPA 2.0을 사용하여 생성되었습니다.

User.java :

@Entity 
@Table(name="users") 
public class User implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int id; 

    private String name; 

    private String password; 

    //bi-directional one-to-one association to Profile 
    @OneToOne(mappedBy="user") 
    private Profile profile; 

    //bi-directional many-to-one association to UserRole 
    @OneToMany(mappedBy="user") 
    private Set<UserRole> userRoles; 

    //bi-directional many-to-many association to Activity 
    @ManyToMany 
    @JoinTable(
     name="user_activity" 
     , joinColumns={ 
      @JoinColumn(name="users_id") 
      } 
     , inverseJoinColumns={ 
      @JoinColumn(name="activities_id") 
      } 
     ) 
    private Set<Activity> activities; 

    public User() { 
    } 

    public int getId() { 
     return this.id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getPassword() { 
     return this.password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public Profile getProfile() { 
     return this.profile; 
    } 

    public void setProfile(Profile profile) { 
     this.profile = profile; 
    } 

    public Set<UserRole> getUserRoles() { 
     return this.userRoles; 
    } 

    public void setUserRoles(Set<UserRole> userRoles) { 
     this.userRoles = userRoles; 
    } 

    public Set<Activity> getActivities() { 
     return this.activities; 
    } 

    public void setActivities(Set<Activity> activities) { 
     this.activities = activities; 
    } 

} 

UserRole.java :

@Entity 
@Table(name="user_roles") 
public class UserRole implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @EmbeddedId 
    private UserRolePK id; 

    private String name; 

    //bi-directional many-to-one association to User 
    @ManyToOne 
    @JoinColumn(name="users_id", insertable = false, updatable = false) 
    private User user; 

    public UserRole() { 
    } 

    public UserRolePK getId() { 
     return this.id; 
    } 

    public void setId(UserRolePK id) { 
     this.id = id; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public User getUser() { 
     return this.user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 

} 

UserRolePK.java :

@Embeddable 
public class UserRolePK implements Serializable { 
    //default serial version id, required for serializable classes. 
    private static final long serialVersionUID = 1L; 

    @Column(name="users_id") 
    private int usersId; 

    @Column(name="role_name") 
    private String roleName; 

    public UserRolePK() { 
    } 
    public int getUsersId() { 
     return this.usersId; 
    } 
    public void setUsersId(int usersId) { 
     this.usersId = usersId; 
    } 
    public String getRoleName() { 
     return this.roleName; 
    } 
    public void setRoleName(String roleName) { 
     this.roleName = roleName; 
    } 

    public boolean equals(Object other) { 
     if (this == other) { 
      return true; 
     } 
     if (!(other instanceof UserRolePK)) { 
      return false; 
     } 
     UserRolePK castOther = (UserRolePK)other; 
     return 
      (this.usersId == castOther.usersId) 
      && this.roleName.equals(castOther.roleName); 

    } 

    public int hashCode() { 
     final int prime = 31; 
     int hash = 17; 
     hash = hash * prime + this.usersId; 
     hash = hash * prime + this.roleName.hashCode(); 

     return hash; 
    } 
} 

데이터는 "사용자"에 삽입하지만 나머지는하지 않습니다 작업.

@ManagedBean(name="bean") 
//@SessionScoped 
//@LocalBean 

public class RegistrationBean implements Serializable{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 3158649307217736396L; 
    ////////////////////////////////////////////////////////////////// 


     public String name; 
     public String password; 
     public int id; 

     public int usersId = id; 
     public String roleName="user"; 

     public Set<UserRole> userRoles; 


     @EJB 
     private UserService us; 

     public int getUsersId() { 
      return usersId; 
     } 

     public void setUsersId(int usersId) { 
      this.usersId = usersId; 
     } 

     public String getRoleName() { 
      return roleName; 
     } 

     public void setRoleName(String roleName) { 
      this.roleName = roleName; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getPassword() { 
      return password; 
     } 

     public void setPassword(String password) { 
      this.password = password; 
     } 

     public int getId() { 
      return id; 
     } 

     public void setId(int id) { 
      this.id = id; 
     } 

     public String addUser() { 
      User u = new User(); 
      UserRolePK urpk = new UserRolePK(); 
      UserRole ur = new UserRole(); 
      u.setName(name); 
      u.setPassword(password); 
      u.setId(id); 

      urpk.setUsersId(usersId); 
      urpk.setRoleName(roleName); 

      ur.setName(name); 
      ur.setUser(u); 

      us.addUser(u); 
      us.addUser(urpk); 
      us.addUser(ur); 
      return "registerbean"; 

     } 
} 

과 :

내가 쓴

@Stateless 
@LocalBean 
//@ManagedBean 
public class UserService implements UserServiceInterface { 



    @PersistenceContext(unitName="virtual.trainer.library") 
    private EntityManager em; 


    public UserService() { 

    } 


    @SuppressWarnings("unchecked") 
    @Override 
    public List<User> getUsers() { 
     return em.createQuery("FROM User").getResultList(); 
    } 

    public void addUser(User u) { 
     // TODO Auto-generated method stub 
     em.persist(u); 
    } 


    public void addUser(UserRolePK urpk) { 
     // TODO Auto-generated method stub 
     em.persist(urpk); 
    } 


    public void addPK(UserRolePK urpk) { 
     // TODO Auto-generated method stub 
     em.persist(urpk); 
    } 


    public void addUser(UserRole ur) { 
     // TODO Auto-generated method stub 
     em.persist(ur); 
    } 


} 

좋아, 내가 'UserTransaction을'JTA를했지만 여전히 난 문제가 :

@ManagedBean(name="bean") 
//@SessionScoped 
//@LocalBean 

public class RegistrationBean implements Serializable{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 3158649307217736396L; 

    //u 
     public String name; 
     public String password; 
     public Set<UserRole> userRoles; 
    //ur 
     public UserRolePK id; 
     public User user; 
    //urpk 
     public String roleName="user"; 
     public int usersId; 

     @EJB 
     private UserService us; 

     //--- getter, setter 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getPassword() { 
      return password; 
     } 

     public void setPassword(String password) { 
      this.password = password; 
     } 

     public Set<UserRole> getUserRoles() { 
      return userRoles; 
     } 

     public void setUserRoles(Set<UserRole> userRoles) { 
      this.userRoles = userRoles; 
     } 

     public UserRolePK getId() { 
      return id; 
     } 

     public void setId(UserRolePK id) { 
      this.id = id; 
     } 

     public User getUser() { 
      return user; 
     } 

     public void setUser(User user) { 
      this.user = user; 
     } 

     public String getRoleName() { 
      return roleName; 
     } 

     public void setRoleName(String roleName) { 
      this.roleName = roleName; 
     } 

     public int getUsersId() { 
      return usersId; 
     } 

     public void setUsersId(int usersId) { 
      this.usersId = usersId; 
     } 




     public String addUser() { 

      User u = new User(); 
      UserRole ur = new UserRole(); 
      UserRolePK urpk = new UserRolePK(); 

      u.setName(name); 
      u.setPassword(password); 
      u.setUserRoles(userRoles); 


      ur.setName(name); 
      ur.setUser(user); 
      ur.setId(urpk); 

      urpk.setRoleName(roleName); 
      urpk.setUsersId(usersId); 

      us.addUser(u, ur); 

      return "adduser"; 
     } 
} 

UserService.java :

@Stateless 
@LocalBean 
public class UserService implements UserServiceInterface { 


    @PersistenceContext(unitName="virtual.trainer.entities", type=PersistenceContextType.TRANSACTION) 
    private EntityManager em; 

    @Resource 
    @ Inject 
    private UserTransaction xtx ; 

    public UserService() { 

    } 

    @SuppressWarnings("unchecked") 
    @Override 
    public List<User> getUsers() { 
//  return null; 
     return em.createQuery("FROM User").getResultList(); 
    } 


    public void addUser(User u, UserRole ur) { 



      try { 
       xtx.begin(); 
       em.persist(u); 
       em.persist(ur); 
       xtx.commit(); 
      } catch (NotSupportedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia1/7"); 
      } catch (SystemException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia2/7"); 
      } catch (SecurityException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia3/7"); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia4/7"); 
      } catch (RollbackException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia5/7"); 
      } catch (HeuristicMixedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia6/7"); 
      } catch (HeuristicRollbackException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("Chujnia z grzybnia7/7"); 
      } 

//   em.persist(urpk); 

      em.flush(); 
//   em.close(); 

    } 

} 

콘솔 :

07:28:53,476 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) javax.transaction.NotSupportedException: BaseTransaction.checkTransactionState - ARJUNA016051: thread is already associated with a transaction! 

07:28:53,478 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:63) 

07:28:53,479 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) 

07:28:53,480 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:142) 

07:28:53,481 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at virtual.trainer.bean.UserService.addUser(UserService.java:66) 

07:28:53,482 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

07:28:53,483 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 

07:28:53,484 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

07:28:53,484 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.lang.reflect.Method.invoke(Unknown Source) 

07:28:53,485 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) 

07:28:53,486 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,487 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) 

07:28:53,488 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) 

07:28:53,489 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,490 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) 

07:28:53,491 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,492 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) 

07:28:53,493 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,494 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 

07:28:53,495 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) 

07:28:53,496 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,497 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) 

07:28:53,498 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,499 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) 

07:28:53,499 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304) 

07:28:53,500 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190) 

07:28:53,501 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,502 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) 

07:28:53,503 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,504 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) 

07:28:53,505 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,506 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) 

07:28:53,507 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,508 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:32) 

07:28:53,509 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,510 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) 

07:28:53,511 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,511 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 

07:28:53,512 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) 

07:28:53,513 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173) 

07:28:53,514 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 

07:28:53,515 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 

07:28:53,516 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72) 

07:28:53,517 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at virtual.trainer.bean.UserService$$$view297.addUser(Unknown Source) 

07:28:53,517 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at pl.wlukasiak.beans.RegistrationBean.addUser(RegistrationBean.java:120) 

07:28:53,518 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

07:28:53,519 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 

07:28:53,520 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

07:28:53,521 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.lang.reflect.Method.invoke(Unknown Source) 

07:28:53,521 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.el.parser.AstValue.invoke(AstValue.java:262) 

07:28:53,522 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 

07:28:53,523 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 

07:28:53,524 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) 

07:28:53,525 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 

07:28:53,526 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.faces.component.UICommand.broadcast(UICommand.java:315) 

07:28:53,527 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 

07:28:53,527 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 

07:28:53,528 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 

07:28:53,529 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 

07:28:53,530 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 

07:28:53,531 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 

07:28:53,532 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 

07:28:53,533 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 

07:28:53,533 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 

07:28:53,534 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 

07:28:53,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:397) 

07:28:53,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 

07:28:53,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) 

07:28:53,538 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) 

07:28:53,539 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 

07:28:53,540 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 

07:28:53,541 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) 

07:28:53,542 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 

07:28:53,542 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) 

07:28:53,543 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) 

07:28:53,544 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.lang.Thread.run(Unknown Source) 

07:28:53,545 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) Caused by: java.lang.IllegalStateException: BaseTransaction.checkTransactionState - ARJUNA016051: thread is already associated with a transaction! 

07:28:53,546 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.checkTransactionState(BaseTransaction.java:257) 

07:28:53,547 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:59) 

07:28:53,548 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) ... 74 more 

07:28:53,549 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Chujnia z grzybnia1/7 

답변

0

한 번에 두 테이블을 업데이트 할 수 없습니다.

vars를 proc에 전달하여 데이터베이스 프로 시저를 만들 수도 있습니다.

트랜잭션을 사용하면 업데이트 결과를 확인하고 다음 업데이트로 넘어갈 수 있습니다. 하나가 실패하면 롤백 할 수 있으며 변경 사항이 적용되지 않습니다.

MySql은 이것을 지원하지만 올바른 설정과 데이터베이스 [InnoDB]를 사용해야합니다.

START TRANSACTION; 업데이트 테이블 한 세트 x = bla; 오류 롤백 일 경우 업데이트 테이블 2 세트 y = bla; 오류 롤백 else commit 인 경우 ; 단지 예를 들어 당신은 자바에이를 작성하거나 더 나은 수 있습니다

- - 자바를 방지하고 발동 쓰기

http://dev.mysql.com/doc/refman/5.0/en/commit.html

예는 코드가 아닙니다. http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html

+0

내가 원한다면, 일반적으로, 사용자 테이블에있는 사용자 이름, 암호, 사용자 테이블 및 UserRole 테이블에 다음과 같이 작성해야합니다. 이름, 사용자 역할, user_id는 사용자 테이블의 ID와 동일하지만 나는이 계급 간의 관계를 이해하지 못한다. – Wojtek

+0

Okey, 나는 UserTransaction을 시도했지만 여전히 작동하지 않습니다. – Wojtek