【发布时间】:2014-07-19 18:38:33
【问题描述】:
我使用 EclipseLink 从 MySQL 生成我的所有对象,我有一个名为 CONTACT_ID 的字段。当我尝试em.persist(contact) 时,我收到一条错误消息“Unknown column 'CONTACTID'”。
我搜索了我的项目和数据库,我没有任何名为CONTACTID 的列。 JPA 以某种方式删除了此列名称中的“_”。我确信这真的很愚蠢,我只是不知道为什么。
这是我的数据库设计:
用户.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;
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;
用户PK.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;
【问题讨论】:
-
看起来 EclipseLink 完全忽略了您的 JPA 字段注释 - 它不仅忽略了
name="CONTACT_ID",而且还忽略了insertable=false,后者意味着该字段不应在persist中使用...您的代码中有其他 JPA 注释吗?它们是否按预期工作?
标签: mysql spring jpa eclipselink