SQLite 데이터베이스에서 Hibernate를 사용하고 있습니다. 다음 클래스가 있습니다 :단일 컬럼 테이블에 문제가있는 Hibernate insert
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Authority {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int idAuthority;
(...)
다음 Author를 확장하고 4 개 또는 5 개의 필드를 추가하는 클래스 작성자가 있습니다.
Hibernate: insert into Authority values ()
그리고 SQLite는 그렇게 좋아하지 않는다 : 내가 저자 객체를 저장하려고하면 는, Hibernate는 다음과 같은 요청을 생성합니다.
"개인 문자열 테스트"와 같은 더미 문자열 필드를 추가하고 생성자에서이 속성을 설정하면 모든 것이 잘 동작합니다.
나는 최대 절전 모드가 새로 생겼으므로 어떻게 진행해야할지 모르겠다. 너는 어떤 생각을 가지고 있니?
편집 : 요청으로, 저자 클래스의 매핑 :
@Entity
@Table(name="Authors")
@PrimaryKeyJoinColumn(name="idAuthority")
public class Author extends Authority {
@Column(name = "firstName")
protected String firstName;
@Column(name = "lastName")
protected String lastName;
@Column(name = "alias")
protected String alias;
(...)
}
편집 : 요청으로 (비스), 삽입 코드 : 공상
public void save(Object data) {
currentSession.saveOrUpdate(data);
}
아무것도 .. 그리고 더 많은 가능한 리드를 제공하기 위해 여기 데이터베이스 스키마가 있습니다 :
create table Authority (idAuthority integer, primary key (idAuthority))
create table Authors (alias varchar, firstName varchar,
lastName varchar, idAuthority bigint not null, primary key (idAuthority))
N.B. : SQLite에서 기본 키 인 정수는 자동으로 AUTO-INCREMENT로 설정됩니다.
제기 예외이 하나입니다
java.sql.SQLException: near ")": syntax error
요청이 더 같이해야한다 : SQLite는 수 있도록 권한 값으로 (NULL)를 삽입 할의 자동 증가하지 이상한 "권한 값으로 삽입 () ".
편집 : 이것은 최대 절전 모드 패키지에 대한 SqlLite의 문제입니다. 난 그냥 HSQLDB로했는데, 그것은 나에게 적절한 쿼리를 제공합니다 (: P하지만 매우 다른 이유, 그리고 너무 실패)
insert into Authority (idAuthority) values (default)
합니다.
다른 DB를 사용하는 것 외에 다른 방법으로이 문제를 해결할 수 있을지 모르겠습니다.
는 저자의 매핑을 붙여, 그래서 우리는 그것을 볼 수 있습니다, 감사 – ssedano
당신은 (Authority''클래스) public으로'idAuthority'을 시도 수 plz 수 있습니까? – Santosh
@ 산 토쉬 : 시도했지만 작동하지 않았다. – Raveline