Я пытаюсь создать столбцы соединения в 2 таблицах в БД MySQL с использованием Hibernate, однако я не могу заставить его работать. Я действительно новичок в этом, поэтому, возможно, я не понял его правильно, прежде чем искать его раньше.Hibernate, соединяющий столбцы
Я создаю проект викторины для своей школы. Учитель может создавать задания. Для этого я создал ER diagram. Если есть что-то, что я должен изменить, я открыт для всех предложений.
Это становилось все более грязным, поэтому я только что создал новый проект (но идея такая же), так что легче не потеряться в коде. Я пытаюсь присоединиться к таблице Box (Учитель в проекте) и Stuff (Задачи в проекте). Просто быстрая заметка, я пробовал некоторые варианты с аннотациями, но это тоже не сработало.
Box класс
@Entity
public class Box {
private int size, box_id;
private String name, shape, colour, material;
public Box(String name, int size, String shape, String colour, String material) {
this.name = name;
this.size = size;
this.shape = shape;
this.colour = colour;
this.material = material;
}
public Box() {
}
@Id
@GenericGenerator(name="id" , strategy="increment")
@GeneratedValue(generator="id")
public int getBox_id() {
return box_id;
}
public void setBox_id(int box_id) {
this.box_id = box_id;
}
@Column(nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(nullable = false)
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@Column(nullable = false)
public String getShape() {
return shape;
}
public void setShape(String shape) {
this.shape = shape;
}
@Column(nullable = false)
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
@Column(nullable = false)
public String getMaterial() {
return material;
}
public void setMaterial(String material) {
this.material = material;
}
}
Материал класс
@Entity
public class Stuff {
private int amount, stuff_id;
private String name, type, colour, material;
@ManyToOne
@JoinColumn(name = "stuff_id")
private Box box;
public Stuff(String name, int amount, String type, String colour, String material, Box box) {
this.name = name;
this.amount = amount;
this.type = type;
this.colour = colour;
this.material = material;
this.box = box;
}
public Stuff() {
}
@Id
@GenericGenerator(name="id" , strategy="increment")
@GeneratedValue(generator="id")
public int getStuff_id() {
return stuff_id;
}
public void setStuff_id(int stuff_id) {
this.stuff_id = stuff_id;
}
@Column(nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(nullable = false)
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
@Column(nullable = false)
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Column(nullable = false)
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
@Column(nullable = false)
public String getMaterial() {
return material;
}
public void setMaterial(String material) {
this.material = material;
}
@Column(nullable = false)
public Box getBox() {
return box;
}
public void setBox(Box box) {
this.box = box;
}
}
После этого, я просто пытаюсь поставить 3 экземпляра Box и 9 экземпляров Материала в БД, как это.
new BoxDao().instertBox(new Box("box1", 10, "cube", "green", "cardboard"));
new StuffDao().instertStuff(new Stuff("stuff1", 5, "toys", "red", "plastic", new BoxDao().getBoxById(1)));
Ошибка я получаю это:
Caused by: org.hibernate.MappingException: Could not determine type for: model.Box, at table: Stuff, for columns: [org.hibernate.mapping.Column(box)]
Я ценю каждый ответ, извините, если это что-то очевидно, но я, наверное, просто пропустил то, что случилось. Спасибо.
О, ничего себе. Я даже поменял идентификаторы для присоединения к классу Stuff. Ну, спасибо за помощь, теперь это работает. –