Java教程

Spring实战运行第六章代码笔记(1)

本文主要是介绍Spring实战运行第六章代码笔记(1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、连表查询时Unknown column ‘ingredient0_.taco_id’ in 'field list’错误

Taco类中有Ingredient相关字段:

 @ManyToMany(targetEntity=Ingredient.class)
  @Size(min=1, message="You must choose at least 1 ingredient")
  private List<Ingredient> ingredients;

依据Taco_Ingredients表进行连表查询:

join table
但是问题在于hibernate在连表查询时,默认join table中的字段为taco_id和ingredient_id,这与实际join table中的column名称不符合。

解决方案:指定join table中的column名

@ManyToMany(targetEntity=Ingredient.class)
  @Size(min=1, message="You must choose at least 1 ingredient")
  @JoinTable(name = "Taco_Ingredients",
          joinColumns = @JoinColumn(name = "taco"),
          inverseJoinColumns = @JoinColumn(name = "ingredient"))
  private List<Ingredient> ingredients;

二、对于Ingredient中的枚举类型字段,无法从ResultSet中获取,Could not read entity state from ResultSet

因为hibernate默认将枚举类型字段的EnumType设置为EnumType.ORDINAL
在这里插入图片描述
显然,从mysql中获取到的type为string类型,无法转换为序数

解决方案:为Ingredient类中的type字段指定EnumType

  @Enumerated(EnumType.STRING)
  private final Type type;
这篇关于Spring实战运行第六章代码笔记(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!