java - 用户定义的数据类型遇到错误的列类型

标签 java hibernate sql-server-2014

我正在使用 hibernate 从 SQL Server 2014 数据库获取一些数据。

有一个表,其中包含用户定义的数据类型的列:

dbo.Nodos
    Id (PK, int, not null)
    Tipo (PK, FK, TipoNodo(tinyint), not null)
    Nombre (varchar(40), null)
    PosX (Coordenada(real), not null)
    PosY (Coordenada(real), not null)
    Label (varchar(8), not null)

这些数据类型是 Coordenada 和 TipoNodo:

User-Defined Data Types
    dbo.Coordenada (real, not null)
    dbo.TipoNodo (tinyint, not null)

我将 Nodos 表映射为 Java 中的 StopDTO 类:

@Entity
@Table(name = "Nodos")
public class StopDTO {

    /*
     * Atributos
     */
    @Id
    @Column(name = "Id", insertable = false, updatable = false)
    private Integer id;
    @Column(name = "Tipo", insertable = false, updatable = false)
    private Integer tipo;
    @Column(name = "Nombre", insertable = false, updatable = false)
    private String nombre;
    @Column(name = "PosX", insertable = false, updatable = false)
    private Float posx;
    @Column(name = "PosY", insertable = false, updatable = false)
    private Float posy;
    @Column(name = "Label", insertable = false, updatable = false)
    private String label;
    ...

当我查询 StopDTOs(使用 NamedNativeQuery)时出现问题,我收到以下消息:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [PosX] in table [Nodos]; found [coordenada (Types#REAL)], but expecting [float (Types#FLOAT)] at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateColumnType(SchemaValidatorImpl.java:165) at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateTable(SchemaValidatorImpl.java:150) at org.hibernate.tool.schema.internal.SchemaValidatorImpl.performValidation(SchemaValidatorImpl.java:95) at org.hibernate.tool.schema.internal.SchemaValidatorImpl.doValidation(SchemaValidatorImpl.java:62) ...

这个问题可以通过为 Coordenada 和 TipoNodo 实现几个 UserType 来解决吗?如果不是我该怎么办?

谢谢!

最佳答案

请检查Hibernate中配置的方言,应该是SQLServer2008Dialect。

关于java - 用户定义的数据类型遇到错误的列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527033/

相关文章:

java - 如何通过 Activity 发送 ArrayList<CustomClass>()

java - App 类中的静态上下文 - 内存泄漏

java - 具有 protected 类的继承

java - JPA @OneToMany Fetch 覆盖 CriteriaQuery 连接条件

java - 未使用 Hibernate 标准投影别名

sql - 枢轴以避免 SQL 中的大量连接?

c# - 使用C#中的ExecuteScalar访问列名?

java - 从自定义数组列表创建一个新列表

java - 如何在 Hibernate 中正确实现具有复合 id 的域对象?

sql-server - 尝试读取 XML 的节点值时出现 XML 解析错误