JPA,Hibernate框架使用的踩坑记录和使用的一些细节问题

package com.sophomoreblog.blog;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@EntityScan("com.sophomoreblog.blog.po")
//@EnableAutoConfiguration
//@MapperScan("com.sophomoreblog.blog.dao")
@EnableJpaRepositories(basePackages = "com.sophomoreblog.blog.dao")

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class BlogApplication {

    public static void main(String[] args) {
        SpringApplication.run(BlogApplication.class, args);
    }

}

使用Jpa踩坑:报错:

  1. Field userRepository in com.sophomoreblog.blog.service.serviceimpl.UserServiceimpField userRepository in com.sophomoreblog.blog.service.serviceimpl.UserServiceimpl required a bean named ‘entityManagerFactory’ that could not be found.
    把@SpringBootApplication 里面的exclude 删除,也就是需要包括在内。
  2. 如果扫描不到你的dao包,加上**@EnableJpaRepositories(basePackages = “com.sophomoreblog.blog.dao”)**
  3. 一定要注意你的实体类中的@Entity,@Table,@Id 都是来自

import javax.persistence.*;
4. 然后需要注意application.yml里面的Jpa的配置是否正确,数据源的配置是否正确
5. @Entity(name = “t_comment”) 这个是Jpa的新版的配置,你需要注意,它相当于 @Entity @Table(name=“t_comment”)这两个配置

  jpa:
    database: mysql
    #可以在日志中进行显示你的sql的执行的语句
    show-sql: true
    #根据你的实体类进行更新,如果字段名什么的有更改会进行同步
    #create 会清空数据重新进行表的创建,小心会丢掉数据
    #none 如果你的数据库已经确定下来你可以使用这个
    hibernate:
      ddl-auto: update

刚刚操作了一把 hibernate: ddl-auto: create:然后所有的数据都被清空,所有的表都重新创建也一次。
如图:
在这里插入图片描述

Blog实体类:

package com.sophomoreblog.blog.po;/*
 *@author 侯治聪
 *@created 2020/10/3-16:43
 *
 */


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
//新版的这样用 老版的两个注解分开了 @Entity 和@Table(name="t_blog")
@Entity(name = "t_blog")
//@Table
public class Blog {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private String content;//内容
    private String firstPicture;//首图
    private String flag;//原创还是转载
    private Integer views;//阅读量
    private boolean appreciation;//赞赏开启
    private boolean shareStatement;//分享权限
    private boolean commentabled;//评论是否开启
    private boolean published;//是否发布
    private boolean recommend;//是否推荐
    @Temporal(TemporalType.TIMESTAMP)
    private Date createTime;
    @Temporal(TemporalType.TIMESTAMP)
    private Date updateTime;

    //一个分类有多个博客
    @ManyToOne
    private Type type;
    //一个标签有多个博客,一个博客有多个标签
    @ManyToMany(cascade = {CascadeType.PERSIST})
    private List<Tag> tags = new ArrayList<>();

    @ManyToOne
    private User user;
    @OneToMany(mappedBy = "blog")
    private List<Comment> comments = new ArrayList<>();

    private String description;





}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时间指导毕业设计

觉得写的好的话可以给我打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值