【发布时间】:2012-02-04 09:29:53
【问题描述】:
数据库:
user_account
id(pk)
email
password
...
user_detail
id(pk fk)
name_first
name_last
...
实体
@Entity
@Table(name="user_account")
@SecondaryTable(name="user_detail", pkJoinColumns=@PrimaryKeyJoinColumn())
public class UserAccount implements Serializable{
private static final long serialVersionUID = -2606506548742732094L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String email;
private String password;
private String tab;
private String shortcut;
private String setting;
private Integer role;
@Column(table="user_detail", name="name_first")
private String nameFirst;
@Column(table="user_detail", name="name_last")
private String nameLast;
@Column(table="user_detail")
private String occupation;
@Column(table="user_detail")
@Temporal(TemporalType.DATE)
private Date birth;
....
}
动作
try{
EntityTransaction transaction = em.getTransaction();
transaction.begin();
em.persist(currentUser);
transaction.commit();
} catch (Exception e){
}
错误
信息:[EL 警告]:2012-01-06 18:45:46.77--ClientSession(17472935)--异常 [EclipseLink-4002] (Eclipse 持久性服务 - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException 内部 异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:表 'mazedb.sequence' 不存在错误代码:1146 调用:更新序列 SET SEQ_COUNT = SEQ_COUNT + ?哪里 SEQ_NAME = ?绑定 => [2 参数绑定]查询:DataModifyQuery(name="SEQUENCE" sql="UPDATE 序列集 SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")
信息:错误:内部异常: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:表 'mazedb.sequence' 不存在错误代码:1146 调用:更新序列 SET SEQ_COUNT = SEQ_COUNT + ?哪里 SEQ_NAME = ?绑定 => [2 参数绑定]查询:DataModifyQuery(name="SEQUENCE" sql="UPDATE 序列集 SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")
我尝试了相反的方法,@PrimaryKeyJoinColumn 合并了两个不同的实体,但我得到了同样的错误。
【问题讨论】:
-
嗯,消息说你需要一个序列表。你为什么不创建它?
-
但是如果不应该有这张桌子,我为什么需要这张桌子呢?
标签: java jpa eclipselink