Я пытаюсь присоединиться к столбцу, используя аннотацию @JoinColumn
, но моя колонка всегда возвращает нуль, и я не уверен, почему.Joincolumn возвращает значение null
@Entity
public class Blender implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "blender_id")
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "blender", fetch = FetchType.EAGER)
private List<Ingredients> ingredients;
private Status status;
private String type;
public Blender() {
}
public Blender(List<Ingredients> ingredients) {
this.ingredients = ingredients;
}
public List<Ingredients> getIngredients() {
return ingredients;
}
public void setIngredients(List<Ingredients> ingredients) {
this.ingredients = ingredients;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public int getId() {
return id;
}
@Override
public String toString() {
String result = String.format(
"Blender[id=%d, type=%s, status=%s]%n",id,type,status);
if(ingredients!=null){
for (Ingredients ingredient: ingredients) {
result += String.format(
"ingredients[id=%d,fruit=%s,juice=%s,ice=%s]%n",
ingredient.getId(),
ingredient.getFruit(),
ingredient.getJuice(),
ingredient.getIce());
}
}
return result;
}
}
и Ингредиенты
@Entity
public class Ingredients implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private int fruit;
private int juice;
private int ice;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(columnDefinition="integer", name = "blender_id")
private Blender blender;
public Ingredients() {
}
public Long getId() {
return id;
}
public int getFruit() {
return fruit;
}
public void setFruit(int fruit) {
this.fruit = fruit;
}
public int getJuice() {
return juice;
}
public void setJuice(int juice) {
this.juice = juice;
}
public int getIce() {
return ice;
}
public void setIce(int ice) {
this.ice = ice;
}
public Blender getBlender() {
return blender;
}
public void setBlender(Blender blender) {
this.blender = blender;
}
@Override
public String toString() {
return "Ingredients{" +
"id=" + id +
", fruit='" + fruit + '\'' +
", juice='" + juice + '\'' +
", ice='" + ice + '\'' +
'}';
}
}
@JoinColumn(columnDefinition="integer", name = "blender_id")
возвращается нуль не знаю, почему.
Что это значит? Аннотации JoinColumn ничего не возвращают. Он просто отмечает поле как имеющее столбец объединения в другую таблицу. Поставщик JPA выдаст SQL, на который вы можете посмотреть. Возможно, когда вы найдете свой ответ ... –
@NeilStockton Ну не '@ JoinColumn' создать внешний ключ в ссылочной таблице? –
«Он просто отмечает поле как имеющее столбец соединения к другой таблице». Если вы скажете «он получен как нуль», пожалуйста, по крайней мере, ПОСЛЕ ВАШЕГО КОДА, чтобы получить объект (ы) и отметьте в транзакции и где вы говорите, что это нуль в этом коде. Это дает основание для комментариев. Некоторый код преобразования без SQL/DDL не –