在hibernate中合并具有复合主键的实体时出现异常

时间:2015-05-11 05:30:23

标签: java hibernate jpa

我正在使用复合主键,如下所示

    @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或列规范

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

查看description for the error

  

您尝试引用列名,但使用的列名是Oracle中的保留字。

您用作名称的东西是Oracle中的保留字。在这种情况下,它似乎是属性名称add。将其映射到不同的列名称。

要识别有问题的属性,如果您不容易识别保留字激活sql日志记录,那么您将看到有问题的sql语句。

逐个删除列,直到错误消失。

将该属性重命名为不与Oracle保留字冲突的内容

这是a list of reserved words

答案 1 :(得分:-1)

@Entity(name=t_mentor)

t_mentor是您的数据库表。您需要将t_mentor更改为数据库表。你需要将Mentor等级映射到数据库表。