gpt4 book ai didi

java - Hibernate Criteria 查询一对多和一对多连续映射 - 表或 View 不存在

转载 作者:行者123 更新时间:2023-12-01 10:24:42 26 4
gpt4 key购买 nike

需要你的帮助。

我正在使用带有注释的 Hibernate 3.6,并且有 3 个带有映射的表/类。类 A 与类 B 映射为 oneToMany,类 B 与类 C 映射为 OneToOne。我正在尝试插入并加载值。

如果我直接调用 session 的.get方法,它会成功返回具有所有映射的对象。但是当我使用 criteria 或 hql 添加一些条件时,它会给我一个错误:ORA-00942:表或 View 不存在(使用 oracle)。

当我调用.get方法时,它不会生成任何sql,但使用Criteria和HQL它会生成插入SQL。我不明白为什么在获取数据时插入查询。

以下是日志:

`Hibernate: insert into A values(???) 
Hibernate: insert into B values(???)
Hibernate: insert into C values(???)
Hibernate: insert into A_B (A_ID, bProperty_ID)
org.hibernate.engine.jdbc.spi.SqlExceptionHelper(line 146): ORA-00942: table or view does not exist`


Class A {
@Id
@Column(name = "A_ID",unique = true, nullable = false)
int id;

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER) //lazy tried
private Set<B> transactionDetails = new HashSet<B>();
}

Class B {

@GenericGenerator(name = "generator", strategy = "foreign",parameters = @Parameter(name = "property", value = "aProperty"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "B_ID",unique = true, nullable = false)
int id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "B_ID", nullable = false, insertable=false, updatable=false)
private A aProperty;

@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name = "B_ID")
private C c;
}

Class C {
@GenericGenerator(name = "generator", strategy = "foreign",parameters = @Parameter(name = "property", value = "bProperty"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "C_ID",unique = true, nullable = false)
int id;

@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private B b;
}

有人知道为什么它给出错误“表或 View 不存在”吗?当我使用有/无条件的标准或 hql 时。

    Criteria crQuery = getSession().createCriteria(A.class);

上面这行给出了错误。就好像我尝试一样 getSession().get("idFromDB");

没有错误,运行正常。

最佳答案

尝试向类添加注释:

@Entity
@Table(name = "<your sql table name>")
Class A {
...

关于java - Hibernate Criteria 查询一对多和一对多连续映射 - 表或 View 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35405883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com