【问题标题】:org.postgresql.util.PSQLException: ERROR: value too long for type character varying(255)org.postgresql.util.PSQLException:错误:对于类型字符变化的值太长(255)
【发布时间】:2016-07-26 13:33:53
【问题描述】:

当我执行我的项目时,我得到这个错误:

目标是使用hibernatejson文本保存到数据库中。

Users.java & UsersBooks.java 同样,

Books.java:

@Entity
@Table(name="tblbooks")
public class Books {


@Id
@Column(name = "bookshareId")
private int bookshareId;

@Column(name="author")
private String author;

@Column(name = "availableToDownload")
private int availableToDownload;

@Column(name = "briefSynopsis")
private String briefSynopsis;

@Column(name="category")
private String category;

@Column(name = "completeSynopsis")
private String completeSynopsis;

@Column(name = "contentId")
private int contentId;

@Column(name = "copyright")
private Date copyright;

@Column(name="downloadFormat")
private String downloadFormat;

@Column(name="dtbookSize")
private int dtbookSize;

@Column(name = "freelyAvailable")
private int freelyAvailable;

@Column(name = "brf")
private int brf;

@Column(name = "daisy")
private int daisy;

@Column(name = "images")
private int images;

@Column(name = "isbn13")
private String isbn13;

@Column(name="language")
private String language;

@Column(name = "publishDate")
private Date publishDate;

@Column(name = "publisher")
private String publisher;

@Column(name = "quality")
private String quality;

@Column(name = "title")
private String title;

@OneToMany(mappedBy="book")
private List<UsersBooks> usersBooks;



//Getters & Setters

【问题讨论】:

  • 进入数据库,你已经设置了字段类型字符,它的长度是 255,这是这里的原因,请或者最大。 255 到 1000(长于 255)或将类型从字符更改为文本或 varchar。
  • 发送到 PostgreSQL 的 SQL 是什么?

标签: java postgresql hibernate spring-boot spring-data-jpa


【解决方案1】:

您尝试保存长度超过 255 个字符的字符串值。只需增加一列长度

@Column(name = "xxx", length = 1024)

您还需要更改数据库中的列长度。

当你使用

@Column(name = "xxx")

Hibernate 使用默认的列长度。

您可以使用@Lob 处理非常大的文本数据。

请使用xxx_users 代替tblusers

使用User 代替Users

在关联的@OneToMany 部分使用CascadeType.ALL

对关联的@ManyToOne 部分使用延迟加载。

@ManyToOne(fetch = FetchType.Lazy)
pravate User user;

【讨论】:

    【解决方案2】:

    对于长度超过 255 个字符的字符串,您可以增加列长度:

    @Column(length = 2048)
    private String column;
    

    对于大尺寸:

    @Lob
    private String column;
    

    无限大小:

    @Column(columnDefinition="text")
    private String column;
    

    【讨论】:

      【解决方案3】:

      错误消息告诉您正在尝试存储一个对于其目标列 (255) 来说太大的字符串。

      你可以:

      • 增加列大小或
      • 将列类型更改为TEXT,而不是VARCHAR(255)

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 2021-06-22
        相关资源
        最近更新 更多