@Enumerated (EnumType.STRING) генерирует столбец int вместо varchar - PullRequest
0 голосов
/ 15 мая 2018

Я использую Spring jpa с Hibernate и MS Sqlserver.У меня есть сущность со свойством enum с аннотацией @Enumerated(EnumType.STRING).Когда генерируется схема базы данных, столбец, заполненный значением enum, имеет тип int вместо типа char.

Методы bean-компонента для установки свойств базы данных:

private Properties getHibernateProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.dialect","org.hibernate.dialect.SQLServer2012Dialect");

    properties.setProperty("hibernate.hbm2ddl.auto","create-drop");       
    properties.setProperty("ejb.naming_strategy","layer.controller.configuration.PhysicalNamingStrategyImpl");
    properties.setProperty("hibernate.search.default.directory_provider","filesystem");


    return properties;
}

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setShowSql(Boolean.TRUE);        
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setDataSource(dataSource());
    factory.setPackagesToScan("layer.domain","layer.application.security.authentication.entities");
    factory.setJpaProperties(getHibernateProperties());
    factory.afterPropertiesSet();

    return factory;
}

enum и entity:

public enum Elenco {
    A,
    B,
    C,
    D;
}

@Entity
@Table(name="elenco")
public class ElencoClass extends BaseEntity<Long> {

    @Column(name="nomeECognome")
    private String nome;


    @Enumerated(EnumType.STRING)
    @Column(columnDefinition = "varchar")
    private Elenco ele;


    @Id
    @Column(name="id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Override
    protected Long getId() {
        return id;
    }

    @Override
    protected void setId(Long id) {

        super.id=id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Elenco getEle() {
        return ele;
    }

    public void setEle(Elenco ele) {
        this.ele = ele;
    }
}

Это таблица, сгенерированная пружиной:

 CREATE TABLE [dbo].[elenco](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [ele] [int] NULL,
    [nome] [varchar](255) NULL,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...