为了简单起见,没有提供getter、setter、ToString和构造函数。我能够保存对象到数据库和数据库已经填充。
@Entity
@Table(catalog = "spring_project")
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String model;
@ManyToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable( name = "car_color", catalog = "spring_project",
joinColumns = { @JoinColumn(name = "car_id") },
inverseJoinColumns = { @JoinColumn(name = "colors_id") }
)
private List<Color> colors = new ArrayList<>();
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="brand_id", referencedColumnName="id")
private Brand brand;
@Entity
@Table(catalog = "spring_project")
public class Brand {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "brand", fetch = FetchType.LAZY)
private List<Car> cars = new ArrayList<>();
@Entity
@Table(catalog = "spring_project")
public class Color {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
如果我像Eager一样获取,一切都运行得很好,但我知道这是一种不好的做法,应该使用懒惰加载。但我一直得到LazyInitializationException。
我从错误中了解到需要一个会话,但我不知道如何提供一个,因为我使用的是Spring Data JPA,也不应该在哪里声明一个...
@SpringBootApplication
public class SrpingJpaApplication {
private static final Logger log =
LoggerFactory.getLogger(SrpingJpaApplication.class);
public static void main(String[] args) {
SpringApplication.run(SrpingJpaApplication.class, args);
}
@Bean
public CommandLineRunner demo(CarRepository carRepository,
ColorRepository colorRepository,
BrandRepository brandRepository) {
return (args) -> {
log.info("Reads all cars....");
for (Car c : carRepository.findAll()) {
System.out.println(c.toString());
}
};
}
在c.toString()上抛出错误;
错误:由:org.hibernate.lazyInitializationException引起:无法初始化代理[com.readiness.moita.srpingjpa.models.brand#1]-没有会话
因为brand
的fetchtype
是惰性的,所以它不会通过调用fetchall()
自动加载到会话中。要将其自动加载到会话中,您需要:
改变
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="brand_id", referencedColumnName="id")
private Brand brand;
到
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="brand_id", referencedColumnName="id")
private Brand brand;
@Component
public CarService implements ICarService {
@Autowired
CarRepository carRepository;
@Transactional
public void printAllCars() {
for (Car c : carRepository.findAll()) {
System.out.println(c.toString());
}
}
}
本章介绍: 引导客户端和服务器 从Channel引导客户端 添加 ChannelHandler 使用 ChannelOption 和属性 正如我们所见,ChannelPipeline 、ChannelHandler和编解码器提供工具,我们可以处理一个广泛的数据处理需求。但是你可能会问,“我创建了组件后,如何将其组装形成一个应用程序?” 答案是“bootstrapping(引导)”。到目前为止我们使
我试图从我的Spring启动服务向IBMMQ队列发送消息。配置如下: 一个pplication.properties 菜豆 IBM MQ浏览器图片 当我尝试发送消息时,我收到错误: 我错过了什么?我的chammel类型所显示的错误与我的请求不符,但我不知道这意味着什么。 提前谢谢。
作为R新手,我很难引导ICC输出。我首先设法使用ICC包计算“正常”ICC,没有任何问题(ICCbare(subject,variable,ICC)),但当我试图得到一些自举估计值时,情况变得更糟。。。 我一开始是 并在引导程序中输入icc_引导,如下所示: 然而,我得到一个错误消息说"未定义的列选择",我哪里出错了? 这是我的一个小数据输出
引导Angular 2应用程序肯定不同于Angular 1.x,但仍然是一个简单的过程。让我们来看看如何做到这一点。
我正试图将