У меня есть два объекта, которые имеют отношение OneToOne между ними: Проект и Пожертвование. проект объект реле определенной логика Пожертвования объекта, который находится внутри проект объекта (пожертвования таблицы shopuld быть заполнена, когда проектов заполнена) .my цель состоит в том, чтобы сделать Пожертвования объекта сохраняться при Проект сохраняется. Мои классы:hibernate сохраняются два объекта одновременно
Project.java
@Entity
@Table(name="projects")
public class Project{
private int id;
private String name;
public Donation donation;
public Project() {}
public Project(String name, Donation donation) {
this.name = name;
this.donation = donation;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="project_id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="project_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToOne
@JoinColumn(name = "project_id")
public DonationLogic getDonation() {
return donation;
}
public void setDonation(DonationLogic donation) {
this.donation = donation;
}
}
Donation.class
@Entity
@Table(name="donations")
public class Donation {
private int totalAmount;
private int daysLeft;
private double collectAmount;
private int id;
private Project project;
public Donation() {}
public Donation(int totalAmount, int daysLeft) {
if(totalAmount <= 0 || daysLeft <= 0) {
throw new IllegalArgumentException();
}
this.totalAmount = totalAmount;
this.daysLeft = daysLeft;
this.collectAmount = 0.0;
}
public Donation(int totalAmount, int daysLeft, double collectedamount) {
if(totalAmount <= 0 || daysLeft <= 0) {
throw new IllegalArgumentException();
}
this.totalAmount = totalAmount;
this.daysLeft = daysLeft;
this.collectAmount = collectedamount;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="donation_id")
public int getId() {
return id;
}
@OneToOne
@JoinColumn(name="donation_project_id")
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
//other getters/ setters
}
Здесь я хочу упорствовать проекта но донорства, а также. .. Но сейчас он не работает (((только проекты таблица заполнена не пожертвования таблицы Можно ли сохраняться их одновременно - пожертвования стол заправить, когда проекты заполнены
Main?. Java
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
SessionFactory sessionfactory = (SessionFactory) context.getBean("sessionFactory");
Session session = sessionfactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Donation donation = new Donation(10000, 50);
Project project1 = new Project("sport arena", "arena in Kiev", donation);
session.persist(project1);//only projects table is persisted. Not donations.
}
В пожертвования таблицы внешний ключ столбец donation_project_id. В проекты - первичный ключ project_id.
Спасибо, Билл. Это почти работает. Однако столбец donation_project_id каким-то образом null (((я не могу заполнить внешний ключ (( – ovod
) Я обновил свой ответ, если вы его не получите, я напишу код. –
Нет, я вам ответ. проблема в том, что donation_project_id из таблицы пожертвований имеет значение null. – ovod