0
我有这样的情况: 有几组POJO类,每个都有一个父类。每个小组都负责处理一些数据记录 - 在JAXB的帮助下将XML转换为XML,并在Hibernate的帮助下转换成数据库。我的工作代码的简化版本是:为什么hibernate不会在表中写入任何信息?
public static abstract class Habit{
String habitName;
/* constructors */
/* getter & setter */
}
@Entity
@Access(AccessType.PROPERTY)
@Table(name = "habit")
public static class DBHabit extends Habit{
@Id
@GeneratedValue
private int id;
@Column(name = "habit_name")
public String getHabitName() {
return habitName;
}
public void setHabitName(String habitName) {
this.habitName = habitName;
}
}
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "habit")
public static class XmlHabit extends Habit{
@XmlElement
public String getHabitName() {
return habitName;
}
public void setHabitName(String habitName) {
this.habitName = habitName;
}
}
public static abstract class Person{
int age;
String name;
List<Habit> habits;
/* Constructor */
/* Getters & Setters */
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Habit> getHabits() {
return habits;
}
public void setHabits(List<Habit> habits) {
this.habits = habits;
}
}
@Entity
@Access(AccessType.PROPERTY)
@Table(name = "person")
public static class DBPerson extends Person{
@Id
@GeneratedValue
private int id;
@Column(name = "age")
@Override
public int getAge() {
return age;
}
@Override
public void setAge(int age) {
this.age = age;
}
@Column(name = "name")
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, targetEntity = DBHabit.class)
@Override
public List<Habit> getHabits() {
return habits;
}
@Override
public void setHabits(List<Habit> friends) {
this.habits = habits;
}
}
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "", propOrder = {
"age",
"name",
"habits"
})
@XmlRootElement(name = "state")
public static class XmlPerson extends Person{
@Override
@XmlElement(required = true)
public int getAge() {
return super.getAge();
}
@Override
public void setAge(int age) {
super.setAge(age);
}
@Override
@XmlElement(required = true)
public String getName() {
return super.getName();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
@XmlElement(required = true)
@XmlElementWrapper(name = "friends")
public List<Habit> getHabits() {
return super.getHabits();
}
@Override
public void setHabits(List<Habit> habits) {
super.setHabits(habits);
}
}
我在使用Hibernate时遇到问题。以为我写到我期望在targetEntity中记录DBHabit.class,hibernate不记录任何关于习惯的信息,这个表总是空的。 请给我一个提示,我可以在这种情况或建议下做些什么,如何以不同的方式为这样的写作制作一个类似的抽象系统。 感谢您的关注!