java.sql.SQLException : ORA-00942: table or view does not exist with JPA entityManager. createQuery()

标签 java oracle hibernate jpa

我正在使用 JPA createquery API 来获取数据。

这是我的查询数据

    @PersistenceContext
    EntityManager entityManager;
    @Override
    public List<String> fetchAllReleaseNumbers() {

        Query query = entityManager.createQuery("SELECT release FROM ReleaseModel", String.class);

        return query.getResultList();
    }

这是我的 pojo 类。

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "dbname.tablenamefromDB")
public class ReleaseModel {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "dbcolumnname", unique = true, nullable = false)
    private String release;

    @Column(name = "dbcolumnname")
    private String releaseDesc;

    @Column(name = "dbcolumnname")
    private Integer releaseStatus;

    @Column(name = "dbcolumnname")
    private Integer releaseMode;


    public String getRelease() {
        return release;
    }

    public void setRelease(String release) {
        this.release = release;
    }

    public String getReleaseDesc() {
        return releaseDesc;
    }

    public void setReleaseDesc(String releaseDesc) {
        this.releaseDesc = releaseDesc;
    }

    public Integer getReleaseStatus() {
        return releaseStatus;
    }

    public void setReleaseStatus(Integer releaseStatus) {
        this.releaseStatus = releaseStatus;
    }

    public Integer getReleaseMode() {
        return releaseMode;
    }

    public void setReleaseMode(Integer releaseMode) {
        this.releaseMode = releaseMode;
    }

}

虽然该表存在于数据库中,但它的抛出不存在。我犯错误的任何想法。 我尝试了是否可以为表名指定任何别名。 我仅将 pojo 类名用于 createQuery。

TIA。

最佳答案

您应该通过这种方式指定架构名称

@Table(schema = "dbname", name = "tablenamefromDB")

您的映射不正确:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "dbcolumnname", unique = true, nullable = false)
private String release;

我认为String无法自动生成。 此外,您的所有列都有 dbcolumnname 名称。

关于java.sql.SQLException : ORA-00942: table or view does not exist with JPA entityManager. createQuery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44202165/

相关文章:

java - java中找到两个节点的最小公共(public)祖先

java - 生成 Java JNI header

mysql - 什么足以将来自多个时区的日期/时间存储在数据库中以进行准确计算?

hibernate - 不是托管类型 : class entity. & Spring Data

java - 如何在 Hibernate @Entity 类中使​​用 Enum 成员?

spring - H2 JdbcSQL异常 : "Table not found" with camelcase table & entity name

java - 为什么我的两个线程可以通过非 volatile 字段进行协调?

php - Oracle 在存储单个字符时使用多少字节?

mysql - 查询从oracle到mysql的转换

java - 在Java中创建最小二叉搜索树(BST)