com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'字段列表'中的未知列'CONTACTID'

top*_*an5 5 mysql spring jpa eclipselink

我使用EclipseLink从MySQL生成我的所有对象,我有一个名为的字段CONTACT_ID.当我想要的时候em.persist(contact),我得到一个错误的消息说" Unknown column 'CONTACTID'".
我搜索了我的项目和数据库,我没有任何列名称CONTACTID.不知何故,JPA删除了此列名称中的"_".我确信这是非常愚蠢的事情,我无法找出原因.

这是我的数据库设计: 在此输入图像描述

User.java:

@EmbeddedId
private UserPK id;

private int score;

//bi-directional many-to-one association to CmnContact
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn (name="CONTACT_ID")
private CmnContact cmnContact;

//bi-directional many-to-one association to Login
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn (name="LOGIN_ID")
private Login login;
Run Code Online (Sandbox Code Playgroud)

CmnContact.java:

@Id
@JoinColumn(name="CONTACT_ID")
private String contactId;
//bi-directional many-to-one association to User
@OneToMany(mappedBy="cmnContact")
private List<User> users;
Run Code Online (Sandbox Code Playgroud)

UserPK.java:

@Column(name="USER_ID")
private UUID userId;

@Column(name="CONTACT_ID", insertable=false, updatable=false)
private UUID contactId;

@Column(name="LOGIN_ID", insertable=false, updatable=false)
private UUID loginId;
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 3

当您具有混合访问类型时,通常会发生这种情况 - 在属性上有一些注释,在字段上有一些注释。除非您覆盖访问类型,否则提供者将根据首先找到的注释来选择实体的访问类型,因此将忽略其他类型。这里给出了访问类型的很好的解释

确保整个模型中的所有注释都是一致的。