【发布时间】:2019-11-19 16:13:35
【问题描述】:
我在 Spring Boot 和 Hibernate 中有一个项目。以前的实体在 Eclipselink 上运行,但已适应 JPA 标准。 每次我尝试下载单个对象时都会出现异常:
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy [com.example.demo.model2.Color # 19] - no Session
据我所知,此消息与@OneToMany、@ManyToOne 关系一起出现。但是我创建了一个新的示例项目。甚至对于没有 @OneToMany 的实体也是同样的问题。我不知道怎么了。可能是什么原因?
实体颜色:
package com.example.demo.model2;
import lombok.Data;
import javax.persistence.*;
@Data
@Entity
@Table(name = "COLOR")
@SequenceGenerator(name = "seq_color", sequenceName = "seq_color", allocationSize = 1)
public class Color {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_color")
private Long id;
private String bluecolor = "";
private String redcolor = "";
private String greencolor = "";
private int index = 0; }
存储库:
@Repository
public interface ColorRepository extends JpaRepository<Color, Long> {
}
简单服务:
@Service
public class SimplyService{
@Autowired
ColorRepository colorRepository;
@EventListener(ApplicationReadyEvent.class)
void test(){
Color color= colorRepository.getOne(19L);
playlist.getBluecolor();
}
}
演示应用:
@EnableJpaRepositories("com.example.demo.repository")
@SpringBootApplication
@EntityScan("com.example.demo.model2")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
application.properties:
spring.datasource.url= jdbc:postgresql://localhost:5432/database
spring.datasource.username=base
spring.datasource.password=base
spring.jpa.hibernate.ddl-auto=none
spring.datasource.driver-class-name=org.postgresql.Driver
Postgresql 色表:
CREATE TABLE public.color
(
id bigint NOT NULL,
bluecolor character varying(255) COLLATE pg_catalog."default",
index integer,
redcolor character varying(255) COLLATE pg_catalog."default",
greencolor character varying(255) COLLATE pg_catalog."default",
CONSTRAINT t_color_pkey PRIMARY KEY (id)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE public.color
OWNER to base;
【问题讨论】: