Java JPA可以';找不到桌子

Java JPA可以';找不到桌子,java,jpa,eclipselink,Java,Jpa,Eclipselink,我使用的是JPA2.0、Eclipselink2.0、maven和WebLogic10.3.6。这是我的persistence.xml org.eclipse.persistence.jpa.PersistenceProvider jdbc/com/ni/ds_edata_soa_nontx com.ni.apps.engineering.certifications.entities.NicdsCliCertificationStg com.ni.apps.engineering.certi

我使用的是JPA2.0、Eclipselink2.0、maven和WebLogic10.3.6。这是我的persistence.xml


org.eclipse.persistence.jpa.PersistenceProvider
jdbc/com/ni/ds_edata_soa_nontx
com.ni.apps.engineering.certifications.entities.NicdsCliCertificationStg
com.ni.apps.engineering.certification.entities.NicdsCliCertificationStgPK
com.ni.apps.engineering.certification.entities.NicdsCliUpMapping
这是我的门面

    package com.ni.apps.engineering.certification.controller;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;
import javax.persistence.TypedQuery;
import com.ni.apps.engineering.certification.entities.NicdsCliCertificationStg;
import com.ni.apps.engineering.certification.exception.CertificationException;
import com.ni.apps.engineering.certification.utils.CertificationConstants;

public class CertificationFacade {  

    @PersistenceUnit(unitName = "certifications")
    private EntityManagerFactory emf;

    public List<NicdsCliCertificationStg> getCertificationsByUpId(String upId)
            throws CertificationException {
        String stringQuery = new StringBuilder(
                "select c from NicdsCliCertificationStg c where c.id.contactsId = 1234").toString();
                //.append(upId).toString();
        try {
            emf = Persistence.createEntityManagerFactory("certifications");     
            EntityManager em = emf.createEntityManager();
            TypedQuery<NicdsCliCertificationStg> query = em
                    .createQuery(stringQuery, NicdsCliCertificationStg.class);
            return query.getResultList();
        } catch (Exception e) {
            throw new CertificationException(
                    CertificationConstants.INTERNAL_ERROR_MESSAGE, e);
        }
    }
}
你知道为什么找不到桌子吗

-编辑- 添加实体

package com.ni.apps.engineering.certification.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;


/**
 * The persistent class for the NICDS_CLI_CERTIFICATION_STG database table.
 * 
 */
@Entity
@Table(name="NICDS_CLI_CERTIFICATION_STG", schema="NI")
public class NicdsCliCertificationStg implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private NicdsCliCertificationStgPK id;

    @Column(name="ALTERNATE_EMAIL")
    private String alternateEmail;

    @Temporal(TemporalType.DATE)
    @Column(name="CERT_EXPIRATION_DATE")
    private Date certExpirationDate;

    @Temporal(TemporalType.DATE)
    @Column(name="CERT_ISSUE_DATE")
    private Date certIssueDate;

    @Column(name="CERT_STATUS")
    private String certStatus;

    @Column(name="FIRST_NAME")
    private String firstName;

    @Column(name="LAST_NAME")
    private String lastName;

    @Column(name="PRIMARY_EMAIL")
    private String primaryEmail;

    //bi-directional one-to-one association to NicdsCliUpMapping
    @OneToOne
    @JoinColumn(name="CONTACTS_ID")
    private NicdsCliUpMapping nicdsCliUpMapping;

    public NicdsCliCertificationStg() {
    }

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

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

    public String getAlternateEmail() {
        return this.alternateEmail;
    }

    public void setAlternateEmail(String alternateEmail) {
        this.alternateEmail = alternateEmail;
    }

    public Date getCertExpirationDate() {
        return this.certExpirationDate;
    }

    public void setCertExpirationDate(Date certExpirationDate) {
        this.certExpirationDate = certExpirationDate;
    }

    public Date getCertIssueDate() {
        return this.certIssueDate;
    }

    public void setCertIssueDate(Date certIssueDate) {
        this.certIssueDate = certIssueDate;
    }

    public String getCertStatus() {
        return this.certStatus;
    }

    public void setCertStatus(String certStatus) {
        this.certStatus = certStatus;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getPrimaryEmail() {
        return this.primaryEmail;
    }

    public void setPrimaryEmail(String primaryEmail) {
        this.primaryEmail = primaryEmail;
    }

    public NicdsCliUpMapping getNicdsCliUpMapping() {
        return this.nicdsCliUpMapping;
    }

    public void setNicdsCliUpMapping(NicdsCliUpMapping nicdsCliUpMapping) {
        this.nicdsCliUpMapping = nicdsCliUpMapping;
    }


}

package com.ni.apps.engineering.certification.entities;

import java.io.Serializable;
import javax.persistence.*;

/**
 * The primary key class for the NICDS_CLI_CERTIFICATION_STG database table.
 * 
 */
@Embeddable
public class NicdsCliCertificationStgPK implements Serializable {
    //default serial version id, required for serializable classes.
    private static final long serialVersionUID = 1L;

    @Column(name="CONTACTS_ID")
    private long contactsId;

    @Column(name="CERT_NAME")
    private String certName;

    public NicdsCliCertificationStgPK() {
    }
    public long getContactsId() {
        return this.contactsId;
    }
    public void setContactsId(long contactsId) {
        this.contactsId = contactsId;
    }
    public String getCertName() {
        return this.certName;
    }
    public void setCertName(String certName) {
        this.certName = certName;
    }

    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof NicdsCliCertificationStgPK)) {
            return false;
        }
        NicdsCliCertificationStgPK castOther = (NicdsCliCertificationStgPK)other;
        return 
            (this.contactsId == castOther.contactsId)
            && this.certName.equals(castOther.certName);
    }

    public int hashCode() {
        final int prime = 31;
        int hash = 17;
        hash = hash * prime + ((int) (this.contactsId ^ (this.contactsId >>> 32)));
        hash = hash * prime + this.certName.hashCode();

        return hash;
    }
}

package com.ni.apps.engineering.certification.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;


/**
 * The persistent class for the NICDS_CLI_UP_MAPPING database table.
 * 
 */
@Entity
@Table(name="NICDS_CLI_UP_MAPPING", schema="NI")
public class NicdsCliUpMapping implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name="NICDS_CLI_UP_MAPPING_CONTACTSID_GENERATOR" )
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="NICDS_CLI_UP_MAPPING_CONTACTSID_GENERATOR")
    @Column(name="CONTACTS_ID")
    private long contactsId;

    @Column(name="PROFILE_ID")
    private BigDecimal profileId;

    //bi-directional one-to-one association to NicdsCliCertificationStg
    @OneToOne(mappedBy="nicdsCliUpMapping")
    private NicdsCliCertificationStg nicdsCliCertificationStg;

    public NicdsCliUpMapping() {
    }

    public long getContactsId() {
        return this.contactsId;
    }

    public void setContactsId(long contactsId) {
        this.contactsId = contactsId;
    }

    public BigDecimal getProfileId() {
        return this.profileId;
    }

    public void setProfileId(BigDecimal profileId) {
        this.profileId = profileId;
    }

    public NicdsCliCertificationStg getNicdsCliCertificationStg() {
        return this.nicdsCliCertificationStg;
    }

    public void setNicdsCliCertificationStg(NicdsCliCertificationStg nicdsCliCertificationStg) {
        this.nicdsCliCertificationStg = nicdsCliCertificationStg;
    }


}

错误在于weblogic的数据源的用户和密码组合与应用程序模式所需的不同。如果我找到一种方法来强制JPA使用特定的模式/用户/密码组合,而不更改数据源中的用户,我将更新此答案。

如果您使用不同的用户进行测试,则在数据源中配置的用户

在数据源连接池配置中,转到高级部分

在“Init SQL”部分中键入(请参阅指令前面的SQL单词,必要时)

SQL ALTER SESSION SET CURRENT_SCHEMA=DEVLPMT


请参见

您是否使用
psql
尝试了该查询?(或任何支持Oracle的SQL客户端)。这可能是各种各样的错误,例如无效的数据库、模式、用户,甚至更糟的是:表是以某种大小写声明的,Oracle预期会出现这种情况。是的,我运行了查询,只是我将?这显示在5678参数的错误中,它工作正常。如何定义实体?是否覆盖默认表名?该实体由eclipse自动生成。我将在这里发布代码。表不存在错误意味着您登录数据库的用户无法看到该表。检查您如何创建ds_edata_soa_nontx数据源,以及它是否使用与您在psql中使用的相同凭据来验证表是否存在
package com.ni.apps.engineering.certification.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;


/**
 * The persistent class for the NICDS_CLI_CERTIFICATION_STG database table.
 * 
 */
@Entity
@Table(name="NICDS_CLI_CERTIFICATION_STG", schema="NI")
public class NicdsCliCertificationStg implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private NicdsCliCertificationStgPK id;

    @Column(name="ALTERNATE_EMAIL")
    private String alternateEmail;

    @Temporal(TemporalType.DATE)
    @Column(name="CERT_EXPIRATION_DATE")
    private Date certExpirationDate;

    @Temporal(TemporalType.DATE)
    @Column(name="CERT_ISSUE_DATE")
    private Date certIssueDate;

    @Column(name="CERT_STATUS")
    private String certStatus;

    @Column(name="FIRST_NAME")
    private String firstName;

    @Column(name="LAST_NAME")
    private String lastName;

    @Column(name="PRIMARY_EMAIL")
    private String primaryEmail;

    //bi-directional one-to-one association to NicdsCliUpMapping
    @OneToOne
    @JoinColumn(name="CONTACTS_ID")
    private NicdsCliUpMapping nicdsCliUpMapping;

    public NicdsCliCertificationStg() {
    }

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

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

    public String getAlternateEmail() {
        return this.alternateEmail;
    }

    public void setAlternateEmail(String alternateEmail) {
        this.alternateEmail = alternateEmail;
    }

    public Date getCertExpirationDate() {
        return this.certExpirationDate;
    }

    public void setCertExpirationDate(Date certExpirationDate) {
        this.certExpirationDate = certExpirationDate;
    }

    public Date getCertIssueDate() {
        return this.certIssueDate;
    }

    public void setCertIssueDate(Date certIssueDate) {
        this.certIssueDate = certIssueDate;
    }

    public String getCertStatus() {
        return this.certStatus;
    }

    public void setCertStatus(String certStatus) {
        this.certStatus = certStatus;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getPrimaryEmail() {
        return this.primaryEmail;
    }

    public void setPrimaryEmail(String primaryEmail) {
        this.primaryEmail = primaryEmail;
    }

    public NicdsCliUpMapping getNicdsCliUpMapping() {
        return this.nicdsCliUpMapping;
    }

    public void setNicdsCliUpMapping(NicdsCliUpMapping nicdsCliUpMapping) {
        this.nicdsCliUpMapping = nicdsCliUpMapping;
    }


}

package com.ni.apps.engineering.certification.entities;

import java.io.Serializable;
import javax.persistence.*;

/**
 * The primary key class for the NICDS_CLI_CERTIFICATION_STG database table.
 * 
 */
@Embeddable
public class NicdsCliCertificationStgPK implements Serializable {
    //default serial version id, required for serializable classes.
    private static final long serialVersionUID = 1L;

    @Column(name="CONTACTS_ID")
    private long contactsId;

    @Column(name="CERT_NAME")
    private String certName;

    public NicdsCliCertificationStgPK() {
    }
    public long getContactsId() {
        return this.contactsId;
    }
    public void setContactsId(long contactsId) {
        this.contactsId = contactsId;
    }
    public String getCertName() {
        return this.certName;
    }
    public void setCertName(String certName) {
        this.certName = certName;
    }

    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof NicdsCliCertificationStgPK)) {
            return false;
        }
        NicdsCliCertificationStgPK castOther = (NicdsCliCertificationStgPK)other;
        return 
            (this.contactsId == castOther.contactsId)
            && this.certName.equals(castOther.certName);
    }

    public int hashCode() {
        final int prime = 31;
        int hash = 17;
        hash = hash * prime + ((int) (this.contactsId ^ (this.contactsId >>> 32)));
        hash = hash * prime + this.certName.hashCode();

        return hash;
    }
}

package com.ni.apps.engineering.certification.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;


/**
 * The persistent class for the NICDS_CLI_UP_MAPPING database table.
 * 
 */
@Entity
@Table(name="NICDS_CLI_UP_MAPPING", schema="NI")
public class NicdsCliUpMapping implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name="NICDS_CLI_UP_MAPPING_CONTACTSID_GENERATOR" )
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="NICDS_CLI_UP_MAPPING_CONTACTSID_GENERATOR")
    @Column(name="CONTACTS_ID")
    private long contactsId;

    @Column(name="PROFILE_ID")
    private BigDecimal profileId;

    //bi-directional one-to-one association to NicdsCliCertificationStg
    @OneToOne(mappedBy="nicdsCliUpMapping")
    private NicdsCliCertificationStg nicdsCliCertificationStg;

    public NicdsCliUpMapping() {
    }

    public long getContactsId() {
        return this.contactsId;
    }

    public void setContactsId(long contactsId) {
        this.contactsId = contactsId;
    }

    public BigDecimal getProfileId() {
        return this.profileId;
    }

    public void setProfileId(BigDecimal profileId) {
        this.profileId = profileId;
    }

    public NicdsCliCertificationStg getNicdsCliCertificationStg() {
        return this.nicdsCliCertificationStg;
    }

    public void setNicdsCliCertificationStg(NicdsCliCertificationStg nicdsCliCertificationStg) {
        this.nicdsCliCertificationStg = nicdsCliCertificationStg;
    }


}