一对多和一对多连续映射的休眠条件查询 - 表或视图不存在
Posted
技术标签:
【中文标题】一对多和一对多连续映射的休眠条件查询 - 表或视图不存在【英文标题】:Hibernate Critera Query for One to Many and one to many continous mapping - table or view doesnt exist 【发布时间】:2016-02-15 09:40:28 【问题描述】:需要你的帮助。
我正在使用带有注释的 Hibernate 3.6,并且有 3 个带有映射的表/类。 A 类与 B 类映射为 oneToMany,B 类与 C 类映射为 OneToOne。我正在尝试插入和加载值。
如果我直接调用 session 的 .get 方法,它会成功返回包含所有映射的对象。但是当我使用条件或 hql 添加一些条件时,它会给我一个错误 ORA-00942: table or view does not exist (Using 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;
有人知道它为什么给出错误“表或视图不存在”吗?当我使用有/无条件的标准或 hql 时。
Criteria crQuery = getSession().createCriteria(A.class);
上面这行给出了错误。好像我在哪里尝试 getSession().get("idFromDB");
没有错误,运行良好。
【问题讨论】:
【参考方案1】:尝试为类添加注释:
@Entity
@Table(name = "<your sql table name>")
Class A
...
【讨论】:
以上是关于一对多和一对多连续映射的休眠条件查询 - 表或视图不存在的主要内容,如果未能解决你的问题,请参考以下文章