我有两个表,模式如下:
表1
table1_id(pk)(整数)
姓名
表2
table2_id(pk)(字符串)
table1_id(pk)(整数)
姓名
我的代码看起来像这样
@Entity
@Table(name = "Table2")
class Table2 {
@Id
@Column(name = "table2_id")
private String id;
@Column(name="name")
private String name;
@OneToMany
@JoinColumn (name="table1_id")
private Set<Table1> table1Set = new HashSet<>();
//setters and getters
}
@Entity
@Table(name = "Table1")
class Table1 {
@Id
@Column(name = "table1_id")
private int id;
@Column(name="name")
private String name;
//setters and getters
}
现在当我查询:Table2Repository.findById("One")
:
我得到以下错误:
Hibernate: select table2.id as table2_id_1_, table2.name as name2_1_ from table2 table20_
Hibernate: select table10_.table1_id as table1_id1_1_0_, table1_.table1_id as table1_id1_0_0_, table10_.table1_id as table1_id1_0_1_, table10_.name as name2_0_1_ from table1 table10_ where table10_.table1_id=?
2017-07-25 12:53:11.352 WARN 11572 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1722, SQLState: 42000
2017-07-25 12:53:11.352 ERROR 11572 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-01722: invalid number
似乎出现了一些不匹配。它似乎使用字符串“表2_id”来查询表1,而它应该使用“表1_id”
好心帮忙!
您的映射中存在名称冲突:< code>Table2.table1Set上的< code > @ join Column(name = " table 1 _ Id ")与< code>Table1.id上的< code > @ Id @ Column(name = " table 1 _ Id ")。请注意,联接列进入< code>Table1,而不是< code>Table2。
您的意思可能是这样的模式:< code>PERSON(id,name,age,a_bunch_of_other_stuff),< code > PERSON _ PHONE _ NUMBER(PERSON _ id,phone_id),< code>PHONE_NUMBER(id,phone_number),在这种情况下,您的映射应该如下所示:
@Entity
@Table(name = "PERSON")
public class Person {
@Id
private int id;
private String name;
...
@OneToMany
@JoinTable(name = "PERSON_PHONE_NUMBER",
joinColumns = @JoinColumn(name = "PERSON_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "PHONE_ID", referencedColumnName = "ID")
)
private Set<PhoneNumber> phoneNumbers;
...
}
@Entity
@Table(name = "PHONE_NUMBER")
public class PhoneNumber {
@Id
private String id;
@Column(name = "PHONE_NUMBER")
private String phoneNumber;
...
}
我正在尝试使用带有Hibernate的Map创建一个简单的程序。我有一个带有州地图的Country实体。这是我的类: 以下是我创建一些国家和州的计划: 当我尝试运行此程序时,我得到的异常为: 我在第< code >行session.save(country)处得到此异常;请告诉我为什么会出现这个错误? 更新: 根据JB给出的答案,现在我在Country和State中添加了到我的Id中。这次我开始得
我正在我的Oracle客户机中运行下面提到的查询,我得到了 ORA-01722:无效号码 错误。我知道这个问题是由于TAG_VALUE列的类型是“”,我正在将其转换为数字,然后在where子句中使用该字段。我尝试过使用“”功能,但这也没有帮助。如果我运行查询时忽略了最后一个 where 条件,代码为
我在包裹抛出错误中有一个查询 ORA-01722:无效号码。 我试了很多方法,但都没有成功。 null 请给我建议解决办法
对于某人来说,这是一个非常简单的方法,下面的插入内容给了我 ORA-01722:无效的数字 为什么?
我不明白为什么我会犯这个错误。 当我对交互式报表执行此查询时,它会引发 ORA-01722 错误。此查询不仅在 SQL 开发人员中正确运行,而且作为经典报表正确运行。当我将类型更改为交互式报表时,再次抛出相同的错误。 我该怎么办? 提前多谢。
当我想比较这两列时,它向我显示了这个menssage,没有“where子句”,没有任何错误,但是当我写“where”时,错误就出现了 这是我的sql句子: 月经错误:ORA-01722:无效号码01722。00000 - “无效号码” *原因:指定的号码无效。*操作: 指定一个有效的数字。