休眠:java.sql.SQLSyntaxErrorException:ORA-00942:表或视图不存在

问题描述 投票:0回答:1

[当我尝试将实体持久化到数据库中时,出现以下错误消息:

错误[common.DbHelper](默认任务2),交易错误:{}:javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法提取ResultSet位于org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)在org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)在org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)在org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:807)在org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785)在common.DbHelper.saveFilterHierarchy(DbHelper.java:109)在hu.otpbank.AggEditorPresenter.onEventSaveBean(AggEditorPresenter.java:225)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:498)在org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)在org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85)

我的实体:

@Entity
@Table(name = "CRM_DM_FILTER", schema = "CRM_DM")
public class Filter implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CRM_DM_filter_seq")
        @SequenceGenerator(name = "CRM_DM_filter_seq", schema = "CRM_DM", sequenceName = "CRM_DM_filter_seq", allocationSize = 1)
        @Column(name = "ID", nullable = false)
        private Integer id;

        public Integer getId() {
            return id;
        }

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

        @ManyToOne
        @JoinColumn(name = "AGGR_ID", referencedColumnName = "ID")
        private Aggr aggrId;

        public Aggr getAggrId() {
            return aggrId;
        }

        public void setAggrId(Aggr aggrId) {
            this.aggrId = aggrId;
        }

        @Basic
        @Column(name = "GROUP_TYPE", nullable = false)
        private String groupType;

        public String getGroupType() {
            return groupType;
        }

        public void setGroupType(String groupType) {
            this.groupType = groupType;
        }

        @ManyToOne
        @JoinColumn(name = "COLUMN_ID", referencedColumnName = "ID")
        private DmColumn columnId;

        public DmColumn getColumnId() {
            return columnId;
        }

        public void setColumnId(DmColumn columnId) {
            this.columnId = columnId;
        }

        @ManyToOne
        @JoinColumn(name = "OPERATION_ID", referencedColumnName = "ID")
        private Operation operationId;

        public Operation getOperationId() {
            return operationId;
        }

        public void setOperationId(Operation operationId) {
            this.operationId = operationId;
        }

        @ManyToOne
        @JoinColumn(name = "VALUE_COLUMN_ID", referencedColumnName = "ID")
        private DmColumn valueColumnId;

        public DmColumn getValueColumnId() {
            return valueColumnId;
        }

        public void setValueColumnId(DmColumn valueColumnId) {
            this.valueColumnId = valueColumnId;
        }

        @Basic
        @Column(name = "VALUE", nullable = true)
        private String value;

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        @OneToOne
        @JoinColumn(name = "PARENT_FILTER_ID", referencedColumnName = "ID")
        private Filter parentFilerId;

        public Filter getParentFilerId() {
            return parentFilerId;
        }

        public void setParentFilerId(Filter parentFilerId) {
            this.parentFilerId = parentFilerId;
        }

        @Basic
        @Column(name = "DESCRIPTION", nullable = true)
        private String description;

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        @Basic
        @Column(name = "CRU", nullable = false)
        private Integer cru;

        public Integer getCru() {
            return cru;
        }

        public void setCru(Integer cru) {
            this.cru = cru;
        }

        @Basic
        @Column(name = "CRD", nullable = false)
        private Date crd;

        public Date getCrd() {
            return crd;
        }

        public void setCrd(Date crd) {
            this.crd = crd;
        }

        @Basic
        @Column(name = "CRSCN", nullable = false)
        private BigInteger crscn;

        public BigInteger getCrscn() {
            return crscn;
        }

        public void setCrscn(BigInteger crscn) {
            this.crscn = crscn;
        }

        @Basic
        @Column(name = "LMU", nullable = false)
        private Integer lmu;

        public Integer getLmu() {
            return lmu;
        }

        public void setLmu(Integer lmu) {
            this.lmu = lmu;
        }

        @Basic
        @Column(name = "LMD", nullable = false)
        private Date lmd;

        public Date getLmd() {
            return lmd;
        }

        public void setLmd(Date lmd) {
            this.lmd = lmd;
        }

        @Basic
        @Column(name = "LMSCN", nullable = false)
        private Integer lmscn;

        public Integer getLmscn() {
            return lmscn;
        }

        public void setLmscn(Integer lmscn) {
            this.lmscn = lmscn;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Filter filter = (Filter) o;
            return  Objects.equals(aggrId, filter.aggrId) &&
                    Objects.equals(groupType, filter.groupType) &&
                    Objects.equals(operationId, filter.operationId) &&
                    Objects.equals(value, filter.value) &&
                    Objects.equals(parentFilerId, filter.parentFilerId);
        }


        @Override
        public int hashCode() {
            return Objects.hash(aggrId, groupType, operationId, value, parentFilerId);
        }
    }

我给出错误的方法:

public Result saveFilterHierarchy(List<Filter> filters) {
        EntityTransaction transaction = null;
        EntityManager entityManager = null;
        Result result = new Result();
        try {
            entityManager = createEntityManager();
            if (entityManager != null) {

                if (filters != null && !filters.isEmpty())
                    for(int i = 0; i < filters.size(); i++) {
                        logger.error("Filter ready: {}", filters.get(i));
                        if(filters.get(i).getId() == null) {
                            transaction = entityManager.getTransaction();
                            transaction.begin();
                            initDatabaseSession(entityManager);
                            logger.error("Filter saved: {}", filters.get(i));
                            entityManager.flush();
                            entityManager.persist(filters.get(i));
                            transaction.commit();
                        }
                    }
                }
        } catch (Exception ex) {
            logger.error("Transaction error: {}", ex);
        } finally {
            closeEntityManager(entityManager);
        }
        return result;
    }

什么可能导致此错误?

java sql oracle hibernate weld
1个回答
0
投票

原来我没有用于ID的序列的SELECT权限

© www.soinside.com 2019 - 2024. All rights reserved.