私はこのような状況にあります: POJOクラスのグループがいくつかあり、それぞれに親が1つあります。各グループは、JAXBの助けを借りて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が習慣に関する情報を記録しないことを期待していると書いたと思っています。このテーブルは常に空です。 私はこのような状況やアドバイスで何ができるのか、どのようにしてこのような似たような抽象的なシステムを様々な方法で書くことができるか、ヒントを教えてください。 ご注意いただきありがとうございます!