JPA DDL генерация исключения - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующая сущность

@Data
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "REF_CLIENT")
@IdClass(RefClientID.class)

@NamedNativeQueries({@NamedNativeQuery(name = "RefClient.updateByClicincli", query = "UPDATE REF_CLIENT rc "
        + "SET rc.clicexcli = :clicexcli , rc.cliidclient=:cliidclient ,"
        + "rc.cliemail=:cliemail, rc.clitypcli=:clitypcli ," + "rc.clietatcli=:clietatcli"
        + "  WHERE rc.clicincli = :clicincli ;")})
public class RefClient extends CommonData implements Serializable {

    private static final long serialVersionUID = 4763218211813908401L;

    /**
     * N X NUMBER Code interne client
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "CLICINCLI", unique = true, updatable = false, nullable = false)
    private Long clicincli;

    /**
     * N X VARCHAR2(13) Code externe client
     */
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(name = "CLICEXCLI", unique = true, length = 13, nullable = false)
    private String clicexcli;

класс идентификатора, как показано ниже

@Data
public class RefClientID implements Serializable  {

    /**
     * 
     */
    private static final long serialVersionUID = 1932584805198196159L;

    /**
     * N X VARCHAR2(13) Code externe client
     */
    private String clicexcli;

    /**
     * N X NUMBER Code interne client
     */
    private Long clicincli;

}

сгенерированный DDL в журналах:

Hibernate:создать таблицу ref_client (clicexcli varchar (13) не ноль auto_increment, клинкли bigint не ноль, datcre DATE DEFAULT CURRENT_DATE не нуль

, как вы видите, VARCHAR не может быть автоматически увеличен, как это исправить?

Я попытался удалить стратегию идентификации, ddl работает нормально, но без auto_increment для clicincli, если я его повторно использую, он сгенерирует auto_increment в поле String clicexcli, и в Long не будет auto_increment (Clickincli))

1 Ответ

0 голосов
/ 20 октября 2018

Поскольку по умолчанию стратегия для генерации идентификатора в @ GeneratedValue аннотация GenerationType.AUTO , мы должны вручную изменить ее на SEQUENCE когда мы используем генераторы.

Я бы изменил ваш код на:

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(name = "CLICEXCLI", unique = true, length = 13, nullable = false)
    private String clicexcli;

Вы можете проверить его в Документация Oracle

По умолчанию: javax.persistence.GenerationType.AUTO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...