PSQLException: BŁĄD: wartość zbyt długa dla typu znakowego zmiennego (255)

0

Wyskakuje mi błąd jak w temacie i nie mogę zlokalizować dlaczego.
Próbowałem też usunąć kolumnę ip i zostawić tylko id, ale dostawałem taki sam error, czyli chyba coś z kolumną id jest nie tak.
Co najlepsze w aplikacji mam jeszcze kilka innych modeli, których kod wygląda analogicznie i działają.

Baza danych:

CREATE TABLE public.statistic
(
  id bigint NOT NULL,
  ip character varying(255),
  CONSTRAINT statistic_pkey PRIMARY KEY (id)
)

Model:

package com.blog.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "statistic")
public class Statistic implements Serializable{

	private static final long serialVersionUID = -3009157732242241606L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private long id;
	
	@Column(name = "ip")
	private String ip;
	
	public Statistic() {	
	}
	
	public Statistic(String ip) {
		this.ip = ip;
	}
}

Repozytorium:

package com.blog.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.blog.model.Statistic;

public interface StatisticRepository extends JpaRepository<Statistic, Long> {

}

Kontroler (ze względu na długość tylko najważniejsze fragmenty):

@Controller
public class MainController {

	@Autowired
	StatisticRepository statisticRepository;

	@RequestMapping(value = "/")
	public String homePage(
			Model model
			, HttpServletRequest request
			) {
		statisticRepository.save(new Statistic("11:00:11"));
		return "home";
	}

W załączniku jest log z działania aplikacji.
Ktoś ma pomysł gdzie jest błąd?

0

wyjątek wyraźnie mówi, że próbujesz wstawić więcej niż 255 znaków do pola, które przyjmie maksymalnie 255 znaków. Z logów nie wynika co tam próbujesz wstawić a i w kodzie tego nie widać.
Zmień typ kolumny na np. VARCHAR(2000) i zobacz co się tam pojawi

0

A więc jeśli ustawię id VARCHAR(2000) krzyczy, że nie ma takiej kolumny z typem BIGINT.
Natomiast zrobiłem jeszcze jedną rzecz i ustawiłem na sztywno id na 2 i otrzymuję taki sam komunikat.
Nie pojmuję tego :/

0

nie id tylko ip masz zmienić

0

Jest to samo. Nawet jak zostawię w modelu i bazie tylko id, które jest typu odpowiednio long oraz BIGINT dostaję error BŁĄD: wartość zbyt długa dla typu znakowego zmiennego (255) O.o

edit:
Dodam jeszcze, że nawet jak usunę tabelę z bazy, to repozytorium samo tworzy tabelę, po czym wyrzuca ten sam błąd.

0

Hmm dziwne. ale mam 2 pomysły:

  1. Oprócz zwiększenia długości na bazie, zwiększ też length property adnotacji @Column

  2. Zamień typ w bazie na VARCHAR2 albo TEXT

0

Jak zmieniasz ddl w bazie to wyłącz generowanie po stronie hibernate, bo zapewne z tego wynikaja twoje problemy. Albo korzystaj z tego, ale wszystkie definicje modelu miej w tych encjach, wiec tak jak ktoś wyżej napisał albo

@Column(length = 2000)

albo

@Column(columnDefinition="TEXT")

1 użytkowników online, w tym zalogowanych: 0, gości: 1