База данных:
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 Persistence Services - 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 =?bind => [2 параметра связаны] Запрос: DataModifyQuery (name = "SEQUENCE" sql = "ОБНОВЛЕНИЕ SEQUENCE SET SEQ_COUNT = SEQ_COUNT +? WHERE SEQ_NAME =?")
INFO: ОШИБКА: Внутреннее исключение: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: таблица 'mazedb.sequence' не существует Код ошибки: 1146 Вызов: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?ГДЕ SEQ_NAME =?bind => [2 параметра связаны] Запрос: DataModifyQuery (name = "SEQUENCE" sql = "ОБНОВЛЕНИЕ SEQUENCE SET SEQ_COUNT = SEQ_COUNT +? WHERE SEQ_NAME =?")
Я пробовал другой способ,при объединении двух разных сущностей с помощью @PrimaryKeyJoinColumn, но я получил ту же ошибку.