JPA Java Double SQL de Numéro de colonne

J'ai le SQL suivant la définition d'un tableau dont je ne peux pas changer

CREATE TABLE network_model_property (
    id                NUMBER           NOT NULL PRIMARY KEY,
    name              VARCHAR2(100)    NOT NULL,
    ....        
    max               NUMBER(10),
    min               NUMBER(10),
    ....
)

La JPA ed définition de classe est le suivant

@Entity
@Table(name = "network_model_property")
@SequenceGenerator(name = "PropertySeq", sequenceName = "MODEL_PROPERTY_SEQUENCE")
public class ModelProperty implements Serializable {

    static final long serialVersionUID = -3276944825572313129L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PropertySeq")
    @Column(name = "id")
    private Long id;

    @Column(name = "max")
    private Double max;

    @Column(name = "min")
    private Double min;


    public Double getMax() {
        return max;
    }

    public void setMax(Double max) {
        this.max = max;
    }

    public Double getMin() {
        return min;
    }

    public void setMin(Double min) {
        this.min = min;
    }

Je suis à court d'un simple cas de test qui rejette cette exception lorsque la " mise en veille prolongée.hbm2ddl.auto=valider " est défini

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: assure] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:224)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
... 33 more
Caused by: org.hibernate.HibernateException: Wrong column type in POCOWN1.NETWORK_MODEL_PROPERTY for column max. Found: number, expected: double precision
at org.hibernate.mapping.Table.validateColumns(Table.java:284)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1116)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 38 more

Et j'ai essayé de

@Column(name = "max", columnDefinition="Decimal(10,2) default '100.00'")

et

@Column(name = "max",precision=10, scale=2)
  • Il cartes le max et le min de la propriété de type incorrect.
  • Pouvez-vous changer la classe? Si oui, le changement max et min à Long ou Integer.
  • NON, j'ai besoin de garder la colonne type float/double type.
  • Il n'y a aucun point en ayant le Double de votre Entité, alors que votre Tableau ne prend pas en charge la précision qui le Double est d'environ. Comme @John Farrelly suggère, réglez l'échelle à 0.
  • Et par la manière, je pense que toutes les propriétés aiment la précision, échelle etc. situé sur @Colonne ne fonctionne pas, parce que vous ne générez pas les tables de la part d'entités, vous avez tout simplement la CARTE à déjà existante de la table. Donc, j'imagine, pour oublier votre conception. Si vous souhaitez utiliser des doubles, travailler avec eux, mais en fin de compte de la carte Entier à une colonne réelle.
InformationsquelleAutor emeraldjava | 2012-04-05