Java J2ee、jpa与使用netbeans IDE的属性的多对多关系问题

Java J2ee、jpa与使用netbeans IDE的属性的多对多关系问题,java,jakarta-ee,jpa,netbeans,many-to-many,Java,Jakarta Ee,Jpa,Netbeans,Many To Many,我试图使用netbeans IDE在jpa中创建多对多映射。我有许多实体类,例如User、Comment、Post等。 用户和通过评论链接的帖子实体之间存在多对多的关系,比如说像被观看的帖子。一个用户可能对一篇文章有许多评论,而一篇文章可能从一个/多个用户那里得到许多评论。但是当我第一次注册用户时,他/她将不会有评论,比如说。因此,我只想注册用户。 问题是,当我试图在没有注释的情况下保存用户时,会出现nullpointer异常。为了保存用户,我有一个名为UserDao的DAO类,它有一个save

我试图使用netbeans IDE在jpa中创建多对多映射。我有许多实体类,例如User、Comment、Post等。
用户和通过评论链接的帖子实体之间存在多对多的关系,比如说像被观看的帖子。一个用户可能对一篇文章有许多评论,而一篇文章可能从一个/多个用户那里得到许多评论。但是当我第一次注册用户时,他/她将不会有评论,比如说。因此,我只想注册用户。
问题是,当我试图在没有注释的情况下保存用户时,会出现nullpointer异常。为了保存用户,我有一个名为
UserDao
的DAO类,它有一个save方法,该方法接收用户对象并调用JPA persist方法。为了调用这个方法,我有一个名为Tester的单例类,它创建一个用户并调用
UsarDao
save方法

这是我的密码:

Tester class:

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import tube_application.manager.Comment;
import tube_application.manager.LikeDislike;
import tube_application.manager.User;
import tube_application.manager.UserDaoLocal;
import tube_application.manager.Watched;

    @Singleton
    @Startup
    public class Tester {
        @EJB
        UserDaoLocal userDao;

        @PostConstruct
        void start_here(){
            User user=new User();
            user.setAge(18);
            user.setEmail("biliyala.ezd2@gmail.com");
            user.setGender("m");
            user.setName("Ezedin");
            user.setPassword("password");
            user.setUserName("username");

            userDao.saveUser(user);

        }
    }

    UserDaoLocal interface:


    import javax.ejb.Local;

    @Local
    public interface UserDaoLocal {
        void saveUser(User user);
        void saveCategory(Catigory cat);
    }

    UserDao class:

    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;


    @Stateless
    public class UserDao implements UserDaoLocal {
        @PersistenceContext(unitName = "tube_application_tube-ejb_ejb_1.0-SNAPSHOTPU")
        EntityManager em;
        @Override
        public void saveUser(User user) {

            try {

               em.persist(em); 
            } catch (Exception e) {
                e.setStackTrace(null);
            }

        }

    }

    User calss:
    import java.io.Serializable;
    import java.util.List;
    import javax.persistence.Basic;
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.validation.constraints.Size;


    @Entity
    @Table(name = "user")
    @NamedQueries({
        @NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")})
    public class User implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "id")
        private Integer id;
        @Size(max = 45)
        @Column(name = "name")
        private String name;
        // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation
        @Size(max = 45)
        @Column(name = "email")
        private String email;
        @Column(name = "age")
        private Integer age;
        @Size(max = 45)
        @Column(name = "user_name")
        private String userName;
        @Size(max = 45)
        @Column(name = "password")
        private String password;
        @Size(max = 5)
        @Column(name = "gender")
        private String gender;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "postedBy")
        private List<Post> postList;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
        private List<LikeDislike> likeDislikeList;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
        private List<Comment> commentList;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
        private List<Watched> watchedList;

        public User() {
        }

        public User(Integer id) {
            this.id = id;
        }

      getters and setters .....

    }

    Comment class:

    import java.io.Serializable;
    import javax.persistence.Column;
    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;
    import javax.persistence.JoinColumn;
    import javax.persistence.Lob;
    import javax.persistence.ManyToOne;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
    import javax.validation.constraints.Size;


    @Entity
    @Table(name = "comment")
    @NamedQueries({
        @NamedQuery(name = "Comment.findAll", query = "SELECT c FROM Comment c")})
    public class Comment implements Serializable {
        private static final long serialVersionUID = 1L;
        @EmbeddedId
        protected CommentPK commentPK;
        @Lob
        @Size(max = 2147483647)
        @Column(name = "comment")
        private String comment;
        @JoinColumn(name = "user_id", referencedColumnName = "id", insertable = false, updatable = false)
        @ManyToOne(optional = false)
        private User user=new User();
        @JoinColumn(name = "post_id", referencedColumnName = "id")
        @ManyToOne(optional = false)
        private Post postId;

        public Comment() {
        }

        public Comment(CommentPK commentPK) {
            this.commentPK = commentPK;
        }

        public Comment(int id, int userId) {
            this.commentPK = new CommentPK(id, userId);
        }

        public CommentPK getCommentPK() {
            return commentPK;
        }

        public void setCommentPK(CommentPK commentPK) {
            this.commentPK = commentPK;
        }

        public String getComment() {
            return comment;
        }

        public void setComment(String comment) {
            this.comment = comment;
        }

        public User getUser() {
            return user;
        }

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

        public Post getPostId() {
            return postId;
        }

        public void setPostId(Post postId) {
            this.postId = postId;
        }


    }

    CommentPK class:

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */

    package tube_application.manager;

    import java.io.Serializable;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Embeddable;
    import javax.validation.constraints.NotNull;


    @Embeddable
    public class CommentPK implements Serializable {
        @Basic(optional = false)
        @Column(name = "id")
        private int id;
        @Basic(optional = false)
        @NotNull
        @Column(name = "user_id")
        private int userId;

        public CommentPK() {
        }

        public CommentPK(int id, int userId) {
            this.id = id;
            this.userId = userId;
        }

        public int getId() {
            return id;
        }

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

        public int getUserId() {
            return userId;
        }

        public void setUserId(int userId) {
            this.userId = userId;
        }



    }


**the error is:** 
WARNING:   EJB5184:A system exception occurred during an invocation on EJB UserDao, method: public void tube_application.manager.UserDao.saveUser(tube_application.manager.User)
WARNING:   javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    at com.sun.ejb.containers.EJBContainerTransactionManager.checkExceptionClientTx(EJBContainerTransactionManager.java:662)
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:507)
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4475)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2009)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1979)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
    at com.sun.proxy.$Proxy495.saveUser(Unknown Source)
    at tube_application.tests.Tester.start_here(Tester.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.ejb.containers.interceptors.BeanCallbackInterceptor.intercept(InterceptorManager.java:1035)
    at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)
    at com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:205)
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:986)
    at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)
    at com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:205)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.init(SystemInterceptorProxy.java:125)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:986)
    at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:412)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:1949)
    at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:475)
    at com.sun.ejb.containers.AbstractSingletonContainer.access$000(AbstractSingletonContainer.java:81)
    at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:654)
    at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:396)
    at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:219)
    at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:180)
    at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:158)
    at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:166)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NullPointerException

SEVERE:   Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method
javax.ejb.EJBException: javax.ejb.CreateException: Initialization failed for Singleton Tester
    at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:656)
    at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:396)
    at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:219)
    at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:180)
    at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:158)
    at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:166)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:744)
Caused by: javax.ejb.CreateException: Initialization failed for Singleton Tester
    at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:483)
    at com.sun.ejb.containers.AbstractSingletonContainer.access$000(AbstractSingletonContainer.java:81)
    at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:654)
    ... 42 more
Caused by: javax.ejb.EJBTransactionRolledbackException
    at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2279)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2060)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1979)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
    at com.sun.proxy.$Proxy495.saveUser(Unknown Source)
    at tube_application.tests.Tester.start_here(Tester.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.ejb.containers.interceptors.BeanCallbackInterceptor.intercept(InterceptorManager.java:1035)
    at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)
    at com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:205)
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:986)
    at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)
    at com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:205)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.init(SystemInterceptorProxy.java:125)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:986)
    at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:412)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:1949)
    at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:475)
    ... 44 more
Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    at com.sun.ejb.containers.EJBContainerTransactionManager.checkExceptionClientTx(EJBContainerTransactionManager.java:662)
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:507)
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4475)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2009)
    ... 76 more
Caused by: java.lang.NullPointerException
测试仪等级:
导入java.util.AbstractList;
导入java.util.ArrayList;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入javax.ejb.ejb;
导入javax.ejb.Singleton;
导入javax.ejb.Startup;
导入tube_application.manager.Comment;
导入tube\u application.manager.LikeDislike;
导入tube_application.manager.User;
导入tube_application.manager.UserDaoLocal;
导入tube_application.manager.Watched;
@独生子女
@启动
公共类测试员{
@EJB
userDao本地userDao;
@施工后
void start_here(){
用户=新用户();
用户设置(18);
user.setEmail(“biliyala。ezd2@gmail.com");
用户设置性别(“m”);
user.setName(“Ezedin”);
user.setPassword(“密码”);
user.setUserName(“用户名”);
userDao.saveUser(用户);
}
}
UserDaoLocal接口:
导入javax.ejb.Local;
@本地的
公共接口UserDaoLocal{
作废保存用户(用户);
无效保存类别(分类类别);
}
UserDao类:
导入javax.ejb.Stateless;
导入javax.persistence.EntityManager;
导入javax.persistence.PersistenceContext;
@无国籍
公共类UserDao实现UserDaoLocal{
@PersistenceContext(unitName=“tube\u应用程序\u tube-ejb\u ejb\u 1.0-SNAPSHOTPU”)
实体管理器;
@凌驾
公共void saveUser(用户){
试一试{
em.persist(em);
}捕获(例外e){
e、 设置跟踪(空);
}
}
}
用户计算:
导入java.io.Serializable;
导入java.util.List;
导入javax.persistence.Basic;
导入javax.persistence.CascadeType;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.namedquerys;
导入javax.persistence.NamedQuery;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入javax.validation.constraints.Size;
@实体
@表(name=“user”)
@命名查询({
@NamedQuery(name=“User.findAll”,query=“从用户u中选择u”)}
公共类用户实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@基本(可选=假)
@列(name=“id”)
私有整数id;
@尺寸(最大值=45)
@列(name=“name”)
私有字符串名称;
{ $%&`*+/^={}}--+(?):[a-Z09','*+[/]={}}[-] + ] *@(?):[AZ-9- -*] *[AZ-9]([A:Z0-9] *[AZ-9])?“,消息=“无效电子邮件”)/ /如果字段包含电子邮件地址,请考虑使用此注释来执行字段验证。//@模式(ReGeXP=)[AZ-0 9!
@尺寸(最大值=45)
@列(name=“email”)
私人字符串电子邮件;
@列(name=“age”)
私人整数年龄;
@尺寸(最大值=45)
@列(name=“user\u name”)
私有字符串用户名;
@尺寸(最大值=45)
@列(name=“password”)
私有字符串密码;
@尺寸(最大值=5)
@列(name=“gender”)
私人字符串性别;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“postedBy”)
私有列表postList;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”)
私人名单,如电子名单;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”)
私人名单;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”)
私有列表监视列表;
公共用户(){
}
公共用户(整数id){
this.id=id;
}
接受者和接受者。。。。。
}
注释类:
导入java.io.Serializable;
导入javax.persistence.Column;
导入javax.persistence.EmbeddedId;
导入javax.persistence.Entity;
导入javax.persistence.JoinColumn;
导入javax.persistence.Lob;
导入javax.persistence.manytone;
导入javax.persistence.namedquerys;
导入javax.persistence.NamedQuery;
导入javax.persistence.Table;
导入javax.validation.constraints.Size;
@实体
@表(name=“comment”)
@命名查询({
@NamedQuery(name=“Comment.findAll”,query=“从注释c中选择c”)}
公共类注释实现可序列化{
私有静态最终长serialVersionUID=1L;
@嵌入ID
受保护的CommentPK CommentPK;
@高球
@尺寸(最大值=2147483647)
@列(name=“comment”)
私有字符串注释;
@JoinColumn(name=“user\u id”,referencedColumnName=“id”,insertable=false,updateable=false)
@多通(可选=假)
私有用户=新用户();
@JoinColumn(name=“post\u id”,参考
em.persist(em);
em.persist(user);