spring boot——一個懶加載問題

一、這是個問題

情形如下
(1)簡單的單元測試類

@RunWith(SpringRunner.class)
@SpringBootTest
public class GirlServiceTest {

    @Autowired
    private GirlService girlService;

    @Test
    public void findOneTest(){
        Girl girl = girlService.findOne(1);
        Assert.assertEquals(new Double(500), girl.getSalary());
    }
}

(2)簡單的service

@Service
public class GirlService {

    @Autowired
    private GirlRepository repository;  //一個繼承JpaRepository<Girl, Integer>的類

    /**
     * 通過id查詢一位女生的信息
     */
    public Girl findOne(Integer id){
        return repository.getOne(id);
    }
}

(3)簡單的實體類

@Entity
public class Girl {
    @Id
    @GeneratedValue
    private Integer id;
    private Double salary;

    public Girl() {
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
}

奇怪的錯誤:
運行測試類型以后,報錯

org.hibernate.LazyInitializationException: could not initialize proxy [com.panda.girl.domain.Girl#1] - no Session
    ……
    at com.panda.girl.domain.Girl_$$_jvstbdd_0.getSalary(Girl_$$_jvstbdd_0.java)
    at com.panda.girl.GirlServiceTest.findOneTest(GirlServiceTest.java:24)

二、問題雖然解決了

?(1)在實體類上增加注解@Proxy(lazy = false)

@Entity
@Proxy(lazy = false)  //解決懶加載問題
public class Girl {
……
}

?(2)在測試類報錯的方法上增加注解@Transactional

@Test
@Transactional    //解決懶加載問題
public void findOneTest(){
   Girl girl = girlService.findOne(1);
   Assert.assertEquals(new Double(500), girl.getSalary());
}

?(3)在application.yml配置文件中增加配置

spring:
  jpa:
    properties:
      hibernate:
        enable_lazy_load_no_trans: true #解決懶加載問題

三、但是有一些疑問

(1)為什么會出現(xiàn)懶加載的錯誤?
(2)以上三種解決方法,分別有什么其他影響?利弊如何?
(3)第二種增加事務(wù)注解的方法,為什么就能解決懶加載問題?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,262評論 6 342
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,939評論 1 92
  • 洛陽:天子駕六,洛陽博物館,洛陽古墓博物館西安:陜西歷史博物館,碑林博物館,半坡遺址博物館,漢陽陵博物館,秦始皇陵...
    silicis閱讀 230評論 0 1

友情鏈接更多精彩內(nèi)容