java - 找到 [nvarchar2 (Types#OTHER)],但期待 [varchar2(255 char) (Types#VARCHAR)]

标签 java oracle hibernate oracle12c

我正在使用 Oracle 数据库 12c,Hibernate 5。
数据线

CREATE TABLE AUTHORITIES 
(
  AUTHORITY NVARCHAR2(64) NOT NULL 
, USERNAME NVARCHAR2(64) 
, CONSTRAINT AUTHORITIES_PK PRIMARY KEY 
  (
    AUTHORITY 
  )
  USING INDEX 
  (
      CREATE UNIQUE INDEX AUTHORITIES_PK ON AUTHORITIES (AUTHORITY ASC) 
      LOGGING 
      TABLESPACE USERS 
      PCTFREE 10 
      INITRANS 2 
      STORAGE 
      ( 
        INITIAL 65536 
        NEXT 1048576 
        MINEXTENTS 1 
        MAXEXTENTS UNLIMITED 
        BUFFER_POOL DEFAULT 
      ) 
      NOPARALLEL 
  )
  ENABLE 
) 
LOGGING 
TABLESPACE USERS 
PCTFREE 10 
INITRANS 1 
STORAGE 
( 
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1 
  MAXEXTENTS UNLIMITED 
  BUFFER_POOL DEFAULT 
) 
NOCOMPRESS 
NO INMEMORY 
NOPARALLEL;

我有实体
import org.hibernate.annotations.Type;    
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * Role entity.
 *
 */
@Entity
@Table(name = "AUTHORITIES")
public class Authorities {    
    @Id
    @Column(name = "AUTHORITY")
    private String authority;    
    @ManyToOne
    @JoinColumn(name = "USERNAME")
    private User user;

    public String getAuthority() {
        return authority;
    }    
    public void setAuthority(String authority) {
        this.authority = authority;
    }    
    public User getUser() {
        return user;
    }    
    public void setUser(User user) {
        this.user = user;
    }    
}

错误:
Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'getSessionFactory' defined in com.donhuvy.config.AppConfig:
Invocation of init method failed; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: 
Schema-validation: 
wrong column type encountered in column [AUTHORITY] in table [AUTHORITIES]; found [nvarchar2 (Types#OTHER)], but expecting [varchar2(255 char) (Types#VARCHAR)]

如何解决?

最佳答案

我知道这个问题有点老,但我遇到了同样的问题并解决了它。
只需像这样扩展您的注释:

(...)
@Column(name = "AUTHORITY", columnDefinition = "varchar2")
private String authority; 
(...)

关于java - 找到 [nvarchar2 (Types#OTHER)],但期待 [varchar2(255 char) (Types#VARCHAR)],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465189/

相关文章:

java - 自包含数组深等于

oracle - 使用 FUNCTION 而不是 CREATE FUNCTION oracle pl/sql

sql - 查询以获取 Oracle DB 版本

Hibernate条件查询

java - Hibernate 并发在 saveOrUpdate 上创建重复记录

java - 如何限制 Hibernate Envers 中的审计类型

java - Java 中的溢出 float

java - 为什么 Jackson 的 PropertyGenerator 会阻止递归循环

jre 1.8.0_60 中的 javafx 渲染故障

带有外键约束的 SQL 删除查询