【发布时间】:2015-08-01 08:26:32
【问题描述】:
我有 3 张桌子。 1 是父母,1 是学生,1 是学生家长。这是家长和学生之间的多对多关系。 parentID 来自父表,studentID 来自学生表。 student_parent 表有 studentID、parentID 和 childRelationship。我需要知道如何使用 JPA(hibernate) 更新 childRelationship 字段。
请注意,我正在使用 Java Spring 和 JPA/Hibernate 来更新我的关系数据库,并且还有其他几个表,但我只想更新 childRelationship 字段。
@Entity
@Table(name = "Student")
@Proxy(lazy = false)
public class Student{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "studentID", nullable = false)
private int studentID;
@Column(name="firstName")
private String firstName;
@Column(name="middleName")
private String middleName;
@Column(name="lastName")
private String lastName;
@Column(name="validationID")
private String validationID;
@Column(name="birthDate")
private Date birthDate;
@Column(name="gender")
private char gender;
@Column(name="ethnicity")
private String ethnicity;
@Column(name="photo") // character type has to confirmed
private byte[] photo;
@Column(name="gradeLevel")
private int gradeLevel;
@Column(name="rewardPoints")
private String rewardPoints;
@Column(name="dateCreated")
private Date dateCreated;
@Column(name="schoolID")
private Integer schoolID;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "addressID")
private Address address;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "userName")
private UserAccount userAccount;
@ManyToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinTable(name="student_parent",
joinColumns = {@JoinColumn(name = "studentID")},
inverseJoinColumns = {@JoinColumn(name = "parentID")})
private Set<Parent> parents = new HashSet<Parent>();
@ManyToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinTable(name="student_community",
joinColumns = {@JoinColumn(name = "studentID")},
inverseJoinColumns = {@JoinColumn(name = "communityID")})
private Set<Community> communities = new HashSet<Community>();
//getter and setting
然后是父母。
@Entity
@Proxy(lazy = false)
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int parentID;
@Column(name="userName")
private String userName;
@Column(name="firstName")
private String firstName;
@Column(name="middleName")
private String middleName;
@Column(name="lastName")
private String lastName;
@Column(name="validationID")
private String validationID;
@Column(name="maritalStatus")
private String maritalStatus;
@Column(name="noOfChildren")
private int noOfChildren;
@Column(name="birthDate")
private Date birthDate;
@Column(name="gender")
private char gender;
@Column(name="ethnicity")
private String ethnicity;
@Column(name="annualIncome")
private Float annualIncome;
@Column(name="dateCreated")
private Date dateCreated;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "addressID")
private Address address;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "userName",unique = true, nullable = false, insertable=false, updatable=false)
private UserAccount userAccount;
//getter and setter
【问题讨论】:
-
由于您使用的是 JPA,因此您使用的是实体。表格无关紧要。我们需要知道的是您的实体的代码、您尝试了什么、您期望它做什么以及它做了什么。
标签: java hibernate jpa many-to-many