Quarkus持久性异常和java空指针异常

Quarkus持久性异常和java空指针异常,java,quarkus,Java,Quarkus,终点类别: @Path("/") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Transactional @ApplicationScoped public class UserEndPoint { @Inject private UserRepository UserDao; @GET

终点类别:

    @Path("/")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    @Transactional
    @ApplicationScoped
    public class UserEndPoint {

        @Inject
        private UserRepository UserDao;

        @GET
        @Path("user")
        public List<Utilisateur> all() {
            return UserDao.findAllUsers();
        }

        @GET
        @Path("user/by-name")
        public List<Utilisateur> findByName(@PathParam String name, @PathParam String firstName) {
            return UserDao.findbyName(name, firstName);
        }

        @GET
        @Path("user/create-after")
        public List<Utilisateur> findCreateAfter(@PathParam Date date) {
            return UserDao.findByCreate_Date(date);
        }

        @GET
        @Path("User/{userId}")
        public Utilisateur findById(@PathParam Long id) {
            Utilisateur p = UserDao.findById(id);
            if (p == null)
                throw new WebApplicationException(Status.NOT_FOUND);
            return p;
        }

        @PUT
        @Path("User/{userId}")
        public void updateUser(@PathParam Long id, Utilisateur newUser) {
            Utilisateur p = UserDao.findById(id);
            if (p == null)
                throw new WebApplicationException(Status.NOT_FOUND);
            p.setBirth_date(newUser.getBirth_date());
            p.setFirtName(newUser.getFirtName());
            p.setLastname(newUser.getLastname());
        }

        @DELETE
        @Path("User/{userId}")
        public void deleteUser(@PathParam Long id) {
            Utilisateur p = UserDao.findById(id);
            if (p == null)
                throw new WebApplicationException(Status.NOT_FOUND);
            UserDao.delete(p);
        }

        @POST
        @Path("user")
        public Response newUser(@Context UriInfo uriInfo, Utilisateur newUser) {
            Utilisateur p = new Utilisateur();
            p.setBirth_date(newUser.getBirth_date());
            p.setFirtName(newUser.getFirtName());
            p.setLastname(newUser.getLastname());
            UserDao.persist(p);

            URI uri = uriInfo.getAbsolutePathBuilder().path(UserEndPoint.class).path(UserEndPoint.class, "findById")
                    .build(p.getUserId());
            return Response.created(uri).build();
        }

    }
@Path(“/”)
@产生(MediaType.APPLICATION_JSON)
@使用(MediaType.APPLICATION_JSON)
@交易的
@适用范围
公共类用户端点{
@注入
私有用户库UserDao;
@得到
@路径(“用户”)
公共列表全部(){
返回UserDao.findAllUsers();
}
@得到
@路径(“用户/按名称”)
公共列表findByName(@PathParam String name,@PathParam String firstName){
返回UserDao.findbyName(name,firstName);
}
@得到
@路径(“用户/创建后”)
公共列表findCreateAfter(@PathParam日期){
返回UserDao.findByCreate_Date(日期);
}
@得到
@路径(“用户/{userId}”)
公共利用率UR findById(@PathParam Long id){
利用率p=UserDao.findById(id);
if(p==null)
抛出新的WebApplicationException(未找到状态);
返回p;
}
@放
@路径(“用户/{userId}”)
public void updateUser(@PathParam Long id,usilizateur newUser){
利用率p=UserDao.findById(id);
if(p==null)
抛出新的WebApplicationException(未找到状态);
p、 setBirth_date(newUser.getBirth_date());
p、 setFirtName(newUser.getFirtName());
p、 setLastname(newUser.getLastname());
}
@删除
@路径(“用户/{userId}”)
public void deleteUser(@PathParam Long id){
利用率p=UserDao.findById(id);
if(p==null)
抛出新的WebApplicationException(未找到状态);
UserDao.delete(p);
}
@职位
@路径(“用户”)
公共响应newUser(@Context-UriInfo-UriInfo,usilimateur-newUser){
提款人p=新提款人();
p、 setBirth_date(newUser.getBirth_date());
p、 setFirtName(newUser.getFirtName());
p、 setLastname(newUser.getLastname());
persist(p);
URI URI=uriInfo.getAbsolutePathBuilder().path(UserEndPoint.class).path(UserEndPoint.class,“findById”)
.build(p.getUserId());
返回Response.created(uri.build();
}
}
Dao类别:

    @ApplicationScoped
    public class UserRepository implements PanacheRepository<Utilisateur> {

        @Inject
        protected EntityManager entityManager;

        @Transactional
        public List<Utilisateur> findbyName(String lastname, String firstName) {

            List<Utilisateur> users = new ArrayList<>();
            try {
                users = entityManager.createQuery("FROM User WHERE lastName = :lastName and firstName", Utilisateur.class)
                        .setParameter("lastName", lastname).getResultList();

            } catch (Exception e) {
                // TODO: handle exception
            }
            return users;

        }

        @Transactional
        public List<Utilisateur> findByCreate_Date(Date date) {

            List<Utilisateur> users = new ArrayList<>();

            try {
                users = entityManager.createQuery("FROM User WHERE create_date> :date", Utilisateur.class)
                        .setParameter("date", date).getResultList();
            } catch (Exception e) {
                // TODO: handle exception
            }
            return users;
        }

        @Transactional
        public void persist(Utilisateur person) {
            try {
                entityManager.persist(person);
            } catch (Exception e) {
                // TODO: handle exception
            }
        }

        @Transactional
        public void delete(Utilisateur person) {
            try {
                entityManager.remove(person);
            } catch (Exception e) {
                // TODO: handle exception
            }
        }

        @Transactional
        public Utilisateur findByUserId(Long id) {
            Utilisateur userid = null;
            try {
                userid = entityManager.find(Utilisateur.class, id);
            } catch (Exception e) {
                // TODO: handle exception
            }
            return userid;
        }

        @Transactional
        public List<Utilisateur> findAllUsers() {
            List<Utilisateur> users = new ArrayList<Utilisateur>();
            try {
                users = entityManager.createQuery("FROM User", Utilisateur.class).getResultList();
            } catch (Exception e) {
                // TODO: handle exception
            }
            return users;
        }

    }
@ApplicationScoped
公共类UserRepository实现了PanacherRepository{
@注入
受保护的实体管理器实体管理器;
@交易的
公共列表findbyName(字符串lastname,字符串firstName){
列表用户=新建ArrayList();
试一试{
users=entityManager.createQuery(“来自用户,其中lastName=:lastName和firstName”,usilisateur.class)
.setParameter(“lastName”,lastName).getResultList();
}捕获(例外e){
//TODO:处理异常
}
返回用户;
}
@交易的
公共列表findByCreate_Date(日期){
列表用户=新建ArrayList();
试一试{
users=entityManager.createQuery(“来自创建日期>:date的用户”,usilizateur.class)
.setParameter(“日期”,date).getResultList();
}捕获(例外e){
//TODO:处理异常
}
返回用户;
}
@交易的
公共无效持续存在(使用人){
试一试{
实体管理者坚持(人);
}捕获(例外e){
//TODO:处理异常
}
}
@交易的
公共作废删除(提款人){
试一试{
实体经理(人);
}捕获(例外e){
//TODO:处理异常
}
}
@交易的
公用事业单位findByUserId(长id){
Usilizateur userid=null;
试一试{
userid=entityManager.find(usilisateur.class,id);
}捕获(例外e){
//TODO:处理异常
}
返回用户标识;
}
@交易的
公共列表findAllUsers(){
列表用户=新建ArrayList();
试一试{
users=entityManager.createQuery(“来自用户”,usilisateur.class).getResultList();
}捕获(例外e){
//TODO:处理异常
}
返回用户;
}
}
实体类:

    @Slf4j
    @Data
    @Entity
    @Table(name = "Utilisateur")
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    @DiscriminatorValue("P_")
    @RegisterForReflection
    public class Utilisateur extends PanacheEntity implements Serializable {

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

        // ------------------------proprieties----------------------------------------
        Date date = null;
        protected static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "USER_ID")
        protected Long userId;

        @NotNull
        @Size(min = 3, max = 50)
        @Column(name = "firstName", length = 50)
        protected String firtName;

        @NotNull
        @Size(min = 3, max = 50)
        @Column(name = "lastName", length = 50)
        protected String lastname;

        @Column(name = "userName", length = 50)
        protected String userName;

        @Column(name = "login", length = 20)
        protected String login;

        @Column(name = "password", length = 50)
        protected String password;

        @Column(name = "email")
        private String email;

        @Column
        private String confirm_pass;

        @Column
        private Long group_id;

        @Column(name = "photo")
        protected String photo;

        @Column(name = "sex", length = 1)
        protected String sex;

        @Column(name = "nationality", length = 50)
        protected String nationality;

        @Column
        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy")
        protected Date birth_date;

        @Column
        protected boolean authenticated;

        @Column
        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm a z")
        protected Date create_date;

        @Column
        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm a z")
        protected Date modify_date;

        @OneToMany(fetch = FetchType.EAGER, mappedBy = "user", cascade = CascadeType.ALL)
        private List<UserRole> roles;

        @Embedded
        @AttributeOverrides({

                @AttributeOverride(name = "phone", column = @Column(name = "P_phone", nullable = false, updatable = true)),
                @AttributeOverride(name = "homePhone", column = @Column(name = "P_homePhone", nullable = false, updatable = true)),
                @AttributeOverride(name = "country", column = @Column(name = "P_country", nullable = false, updatable = true)),
                @AttributeOverride(name = "city", column = @Column(name = "P_city", nullable = false, updatable = true)),
                @AttributeOverride(name = "street", column = @Column(name = "P_street", nullable = false, updatable = true)),
                @AttributeOverride(name = "zipCode", column = @Column(name = "P_zipCode", nullable = false, updatable = true)) })
        Adress adress;

        public Long getUserId() {
            return userId;
        }

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

        public String getFirtName() {
            return firtName;
        }

        public void setFirtName(String firtName) {
            this.firtName = firtName;
        }

        public String getLastname() {
            return lastname;
        }

        public void setLastname(String lastname) {
            this.lastname = lastname;
        }

        public String getLogin() {
            return login;
        }

        public void setLogin(String login) {
            this.login = login;
        }

        public String getPassword() {
            return password;
        }

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

        public String getPhoto() {
            return photo;
        }

        public void setPhoto(String photo) {
            this.photo = photo;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public String getNationality() {
            return nationality;
        }

        public void setNationality(String nationality) {
            this.nationality = nationality;
        }

        public Date getBirth_date() {
            return birth_date;
        }

        public void setBirth_date(Date birth_date) {
            simpleDateFormat.format(birth_date);
            this.birth_date = birth_date;
        }

        public boolean isAuthenticated() {
            return authenticated;
        }

        public void setAuthenticated(boolean authenticated) {
            this.authenticated = authenticated;
        }

        public Date getCreate_date() {
            return create_date;
        }

        public void setCreate_date(Date date) {

            simpleDateFormat.format(date);
            this.create_date = date;
        }

        public Date getModify_date() {
            return modify_date;
        }

        public void setModify_date(Date modify_date) {
            simpleDateFormat.format(modify_date);
            this.modify_date = modify_date;
        }

        public Adress getAdress() {
            return adress;
        }

        public void setAdress(Adress adress) {
            this.adress = adress;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public List<UserRole> getRoles() {
            return roles;
        }

        public void setRoles(List<UserRole> roles) {
            this.roles = roles;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getConfirm_pass() {
            return confirm_pass;
        }

        public void setConfirm_pass(String confirm_pass) {
            this.confirm_pass = confirm_pass;
        }

        public Long getGroup_id() {
            return group_id;
        }

        public void setGroup_id(Long group_id) {
            this.group_id = group_id;
        }

        public Utilisateur() {
            super();

        }

        public Utilisateur(String userName) {
            super();
            this.userName = userName;
        }

        public Utilisateur(String userName, String password) {
            super();
            this.userName = userName;
            this.password = password;
        }

        public Utilisateur(@NotNull @Size(min = 3, max = 50) String firtName,
                @NotNull @Size(min = 3, max = 50) String lastname, String userName, String login, String password,
                String email, String confirm_pass, Long group_id, String photo, String sex, String nationality,
                Date birth_date, boolean authenticated, Date create_date, Date modify_date, List<UserRole> roles,
                Adress adress) {
            super();
            this.firtName = firtName;
            this.lastname = lastname;
            this.userName = userName;
            this.login = login;
            this.password = password;
            this.email = email;
            this.confirm_pass = confirm_pass;
            this.group_id = group_id;
            this.photo = photo;
            this.sex = sex;
            this.nationality = nationality;
            this.birth_date = birth_date;
            this.authenticated = authenticated;
            this.create_date = create_date;
            this.modify_date = modify_date;
            this.roles = roles;
            this.adress = adress;
        }

    }
@Slf4j
@资料
@实体
@表(name=“usilisateur”)
@继承(策略=继承类型。每个类的表)
@鉴别器值(“P_”)
@寄存器反射
公共类Usilizateur扩展PanaceEntity实现可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=461991388948874292L;
//第三十四条礼节----------------------------------------
日期=空;
受保护静态最终SimpleDataFormat SimpleDataFormat=新SimpleDataFormat(“dd/MM/yyyy”);
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“USER\u ID”)
受保护的长用户标识;
@NotNull
@尺寸(最小值=3,最大值=50)
@列(name=“firstName”,长度=50)
受保护的字符串firtName;
@NotNull
@尺寸(最小值=3,最大值=50)
@列(name=“lastName”,长度=50)
受保护的字符串lastname;
@列(name=“userName”,长度=50)
受保护的字符串用户名;
@列(name=“login”,长度=20)
受保护的字符串登录;
@列(name=“password”,长度=50)
受保护的字符串密码;
@列(name=“email”)
私人字符串电子邮件;
@纵队
私人字符串控制器
javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
        at io.quarkus.hibernate.orm.runtime.boot.FastBootEntityManagerFactoryBuilder.persistenceException(FastBootEntityManagerFactoryBuilder.java:113)
        at io.quarkus.hibernate.orm.runtime.boot.FastBootEntityManagerFactoryBuilder.build(FastBootEntityManagerFactoryBuilder.java:67)
        at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.createEntityManagerFactory(FastBootHibernatePersistenceProvider.java:54)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
        at io.quarkus.hibernate.orm.runtime.JPAConfig$LazyPersistenceUnit.get(JPAConfig.java:109)
        at io.quarkus.hibernate.orm.runtime.JPAConfig.startAll(JPAConfig.java:57)
        at io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder.startAllPersistenceUnits(HibernateOrmRecorder.java:77)
        at io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits37.deploy_0(HibernateOrmProcessor$startPersistenceUnits37.zig:70)
        at io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits37.deploy(HibernateOrmProcessor$startPersistenceUnits37.zig:36)
        at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:145)
        at io.quarkus.runtime.Application.start(Application.java:94)
        at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:143)
        at io.quarkus.dev.DevModeMain.doStart(DevModeMain.java:180)
        at io.quarkus.dev.DevModeMain.start(DevModeMain.java:94)
        at io.quarkus.dev.DevModeMain.main(DevModeMain.java:66)
Caused by: java.lang.NullPointerException
        at org.hibernate.search.mapper.orm.mapping.impl.HibernateOrmMetatadaContributor.configure(HibernateOrmMetatadaContributor.java:59)
        at org.hibernate.search.mapper.pojo.mapping.spi.AbstractPojoMappingInitiator.configure(AbstractPojoMappingInitiator.java:89)
        at org.hibernate.search.mapper.orm.mapping.impl.HibernateOrmMappingInitiator.configure(HibernateOrmMappingInitiator.java:129)
        at org.hibernate.search.engine.common.impl.SearchIntegrationBuilderImpl$MappingBuildingState.collect(SearchIntegrationBuilderImpl.java:310)
        at org.hibernate.search.engine.common.impl.SearchIntegrationBuilderImpl.prepareBuild(SearchIntegrationBuilderImpl.java:192)
        at org.hibernate.search.mapper.orm.bootstrap.impl.HibernateOrmIntegrationBooterImpl.doBootFirstPhase(HibernateOrmIntegrationBooterImpl.java:249)
        at org.hibernate.search.mapper.orm.bootstrap.impl.HibernateOrmIntegrationBooterImpl.bootNow(HibernateOrmIntegrationBooterImpl.java:194)
        at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:616)
        at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:591)
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
        at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1975)
        at org.hibernate.search.mapper.orm.bootstrap.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:41)
        at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:389)
        at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
        at io.quarkus.hibernate.orm.runtime.boot.FastBootEntityManagerFactoryBuilder.build(FastBootEntityManagerFactoryBuilder.java:65)