TGM*_*TGM 9 java jpa eclipselink
数据库:
user_account
id(pk)
email
password
...
user_detail
id(pk fk)
name_first
name_last
...
Run Code Online (Sandbox Code Playgroud)
实体
@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;
....
}
Run Code Online (Sandbox Code Playgroud)
行动
try{
EntityTransaction transaction = em.getTransaction();
transaction.begin();
em.persist(currentUser);
transaction.commit();
} catch (Exception e){
}
Run Code Online (Sandbox Code Playgroud)
错误
信息:[EL警告]:2012-01-06 18:45:46.77 - ClientSession(17472935) - 异常[EclipseLink-4002](Eclipse Persistence Services - 2.3.0.v20110604-r9504):org.eclipse.persistence .exceptions.DatabaseException内部异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:表'mazedb.sequence'不存在错误代码:1146调用:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?在哪里SEQ_NAME =?bind => [2个参数绑定]查询:DataModifyQuery(name ="SEQUENCE"sql ="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?WHERE SEQ_NAME =?")
INFO:ERROR:内部异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:表'mazedb.sequence'不存在错误代码:1146调用:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?在哪里SEQ_NAME =?bind => [2个参数绑定]查询:DataModifyQuery(name ="SEQUENCE"sql ="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?WHERE SEQ_NAME =?")
我尝试了另一种方式,有两个不同的实体由@PrimaryKeyJoinColumn合并,但我得到了同样的错误.
JB *_*zet 14
如果EclipseLink尝试访问此表,那意味着它应该在那里.GenerationType.AUTO表示EclipseLink为您的数据库(MySQL)选择最合适的生成类型.在这种情况下,选择是使用基于表的生成器,它需要一个表.请参阅http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/GeneratedValue.
如果您不想使用此策略,请选择其他策略.
尽管做了一百次这样的事情,我以前从来没有遇到过这个错误.我发现这个错误是因为我有一个hibernate属性用于创建表persistence.xml但使用EclipseLink:
它是:
<property name="hibernate.hbm2ddl.auto" value="create"/>
Run Code Online (Sandbox Code Playgroud)
我更改为以下内容以修复错误:
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<!-- or just value="create-tables" -->
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25814 次 |
| 最近记录: |