従業員エンティティ内の関数(埋め込み可能)のリストを関連付けようとしていますが、H2は、「識別子」を期待していると言って不満を感じているようです。
原因:org.h2.jdbc.JdbcSQLException:SQLステートメントの構文エラー "CREATE TABLE EMPLOYEE_FUNCTIONS(EMPLOYEE_EMPLOYEEID VARCHAR(255)NOT NULL、ACTIVE BOOLEAN NOT NULL、DEPARTMENTNUMBER INTEGER NOT NULL、DESCRIPTION VARCHAR(255)、ORDER [*] INTEGER NOT NULL) ";期待される「識別子」;
問題は、私はすでに他のプロジェクトでそれを行っており、なぜそれが機能しないのかわかりません。
Employee.Java
@Entity
public class Employee extends AbstractScheduleEntity<EmployeeSchedule> {
public static final String ACOMBA_UNIQUE_FIELD = "acombaUnique";
@Id
@GenericGenerator(name = "sequence_id", strategy =
"ca.tecsar.core.sql.ServerSequenceGenerator")
@GeneratedValue(generator = "sequence_id")
@Column(name = "EmployeeID", unique = true, nullable = false)
private String employeeID;
@ElementCollection
private List<Function> functions;
//getter and setter
}
Function.Java
@Embeddable
public class Function implements Serializable {
private int order;
private boolean active;
private String description;
private int departmentNumber;
//getter and setter
}
Employeeの不要なプロパティをいくつか削除しました。このエラーの原因は何ですか?従業員の識別子として文字列があるからですか?もしそうなら、どうすればHibernateにEmployee_EmployeeIDを識別子として追加するように指示できますか?ありがとう
私はばかげていて、列に「注文」という名前を付けていたことがわかりました。なぜH2が幸せではなかったのだろうか:upside_down:
変数名を別の名前に変更すると、機能しました。
フィールドに名前を付けるときに同じ問題が発生します:private String to
およびprivate String from
、exに変更。 dayTo、dayFrom、そしてそれは働きました。
入れてみてください; 「とテストの前に?
テスト用のSpringおよびH2データベースで同じ問題が発生しました。エンティティのフィールド名は"interval"で、名前を"inter"に変更し、問題を解決しました。
したがって、これらのエラーは、エンティティ内のSQL予約名が原因で発生します。