나는 SEQUENCE 전략을 사용하여 자동으로 ID를 생성하려고하지만, 작동하도록 내 머리를 부러 뜨리고 있습니다. 나는 왜 그런 일이 일어나지 않을지 전혀 모른다.JPA가 내 행의 ID를 자동으로 생성하지 않는 이유는 무엇입니까?
이것은 내가하는 일입니다. 내가 그것을 매핑이있는 persistence.xml을에서
@Entity
@SequenceGenerator(name="VlasnikSeq", sequenceName="VLA_SEQ")
public class Vlasnik implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="VlasnikSeq")
private Long id;
//...
:
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="sampleAplication">
<class>entities.Vlasnik</class>
<class>entities.Ljubimac</class>
</persistence-unit>
</persistence>
난 일식이 엔티티 테이블을 생성하는 기능을 사용하여 내가이 얻을 먼저 내가 엔티티가
볼 수 있듯이 테이블이 만들어졌지만 SEQUENCE 테이블은 없습니다. JPA가 테이블을 작성하는 동안 나는 또한, 콘솔, 다음과 같은 메시지에 주목 : 내가 할
[EL Warning]: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLSyntaxErrorException: SEQUENCE 'VLA_SEQ' does not exist.
다음 생각은 응용 프로그램을 실행하고 난 일부 행을 만들 수 있는지 확인하려고합니다. 내가 뭔가를 지속하려고 할 때, 나는 말한다 예외가 얻을 :
이org.apache.derby.client.am.SqlException: SEQUENCE 'VLA_SEQ' does not
그래서 내가 어떤 이유로 내가 그 테이블이 필요하다는 결론에 도달을, 그래서는 데이터베이스 관리 측면에 가서 내가 실행하려고 다음 쿼리 :
CREATE SEQUENCE VLA_SEQ;
그러나 나는 다음과 같은 메시지가 얻을 :
Sequence 'VLA_SEQ' already exists.
나는 완전히 혼란 스러워요합니다. 나는 무엇을해야하는지 모른다. DB에 새 행이 만들어지면 내 엔터티의 ID를 자동으로 생성하기 만하면됩니다.
글래스 피쉬 3.1을 처음 사용하는 것은 3.0 버전에서 기억이 안납니다.이 문제는 @GenneratedValue 만 사용할 수도 있습니다. 몇 가지 도움을 주셔서 감사합니다.
@GeneratedValue 주석에서 ID 생성 전략을 지정해 보았습니까? –
@Olivier Croisier 예 AUTO와 SEQUENCE를 묶었지만 작동하지는 않았습니다. 실제로 각 전략의 차이점을 이해하지 못했습니다. – sfrj
AUTO는 자동으로 SEQUENCE로 설정되어 있습니다. 설정이 제대로 작동하지 않습니다. TABLE을 시도해보고 변경 사항이 있는지 확인할 수 있습니까? –