我正在使用复合主键,如下所示
@Entity
public class Mentor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private MentorPK id;
private String email;
public MentorPK getId() {
return id;
}
//getters and setters
}
@Embeddable
public class MentorPK implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String add;
//getters and setters
//override equals and hashcode
}
我在执行entityManager.merge(指导者)
时遇到异常org.hibernate.exception.SQLGrammarException:ORA-01747:无效 user.table.column,table.column或列规范
我在这里缺少什么?
答案 0 :(得分:1)
您尝试引用列名,但使用的列名是Oracle中的保留字。
您用作名称的东西是Oracle中的保留字。在这种情况下,它似乎是属性名称add
。将其映射到不同的列名称。
要识别有问题的属性,如果您不容易识别保留字激活sql日志记录,那么您将看到有问题的sql语句。
逐个删除列,直到错误消失。
将该属性重命名为不与Oracle保留字冲突的内容
答案 1 :(得分:-1)
@Entity(name=t_mentor)
t_mentor是您的数据库表。您需要将t_mentor更改为数据库表。你需要将Mentor等级映射到数据库表。