如何使用Hibernate/JPA删除多个具有额外列的表
我在一个表中关联了两个表,与此模型类似: 如何在不删除Person或Groups表的情况下从Person或Groups表中删除记录?使用级联还是删除孤立?或者有没有另一种方法不被冬眠覆盖 这些实体是:如何使用Hibernate/JPA删除多个具有额外列的表,hibernate,jpa,Hibernate,Jpa,我在一个表中关联了两个表,与此模型类似: 如何在不删除Person或Groups表的情况下从Person或Groups表中删除记录?使用级联还是删除孤立?或者有没有另一种方法不被冬眠覆盖 这些实体是: @Entity @Table(name = "groups") public class Groups { private long idGroup; private String name; private String
@Entity
@Table(name = "groups")
public class Groups {
private long idGroup;
private String name;
private String description;
private Collection<Event> eventsByIdGroup;
private Collection<PersonOnGroup> personOnGroupByIdGroup;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idGroup")
public long getIdGroup() {
return idGroup;
}
public void setIdGroup(long idGroup) {
this.idGroup = idGroup;
}
//Other Setter and getters
@OneToMany(mappedBy = "eventByIdGroups")
public Collection<Event> getEventsByIdGroup() {
return eventsByIdGroup;
}
public void setEventsByIdGroup(Collection<Event> eventsByIdGroup) {
this.eventsByIdGroup = eventsByIdGroup;
}
@OneToMany
public Collection<PersonOnGroup> getPersonOnGroupByIdGroup() {
return personOnGroupByIdGroup;
}
public void setPersonOnGroupByIdGroup(Collection<PersonOnGroup> personOnGroup) {
this.personOnGroupByIdGroup = personOnGroup;
}
}
@Entity
@Table(name = "person")
public class Person {
private long idPerson;
private String firstName;
private String lastName;
private String username;
private String email;
private String password;
private String imageUrl;
private boolean enable = true;
private Collection<Comment> commentsByIdPerson;
private AccessRights accessRightsByIdAccessRights;
private Collection<PersonOnGroup> personOnGroupByIdPerson;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idPerson")
public long getIdPerson() {
return idPerson;
}
public void setIdPerson(long idPerson) {
this.idPerson = idPerson;
}
//Other getter and setter methods
@OneToMany(mappedBy = "commentByIdPerson")
public Collection<Comment> getCommentsByIdPerson() {
return commentsByIdPerson;
}
public void setCommentsByIdPerson(Collection<Comment> commentsByIdPerson) {
this.commentsByIdPerson = commentsByIdPerson;
}
@ManyToOne
@JoinColumn(name = "idAccessRights", referencedColumnName = "idAccessRights", nullable = false)
public AccessRights getAccessRightsByIdAccessRights() {
return accessRightsByIdAccessRights;
}
public void setAccessRightsByIdAccessRights(AccessRights accessRightsByIdAccessRights) {
this.accessRightsByIdAccessRights = accessRightsByIdAccessRights;
}
@OneToMany
public Collection<PersonOnGroup> getPersonOnGroupByIdPerson() {
return personOnGroupByIdPerson;
}
public void setPersonOnGroupByIdPerson(Collection<PersonOnGroup> personOnGroupByIdPerson) {
this.personOnGroupByIdPerson = personOnGroupByIdPerson;
}
}
@Embeddable
public class PersonOnGroupPK implements Serializable {
private Person personPK;
private Groups groupsPK;
@ManyToOne
public Person getPersonPK() {
return personPK;
}
public void setPersonPK(Person person) {
this.personPK = person;
}
@ManyToOne
public Groups getGroupsPK() {
return groupsPK;
}
public void setGroupsPK(Groups groups) {
this.groupsPK = groups;
}
}
@Entity
@Table(name = "personongroup")
public class PersonOnGroup {
private Timestamp joinDate;
private PersonOnGroupPK personOnGroupPK;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
@Column(name = "joinDate")
public Timestamp getJoinDate() {
return joinDate;
}
public void setJoinDate(Timestamp createdAt) {
this.joinDate = createdAt;
}
@EmbeddedId
public PersonOnGroupPK getPersonOnGroupPK() {
return personOnGroupPK;
}
public void setPersonOnGroupPK(PersonOnGroupPK personOnGroupPK) {
this.personOnGroupPK = personOnGroupPK;
}
}
@实体
@表(name=“groups”)
公课组{
私人长途电话组;
私有字符串名称;
私有字符串描述;
私人收藏活动byidGroup;
私人收藏人员ongroupbyidgroup;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idGroup”)
公共长getIdGroup(){
返回idGroup;
}
公共无效集合idGroup(长idGroup){
this.idGroup=idGroup;
}
//其他二传手和接球手
@OneToMany(mappedBy=“eventByIdGroups”)
公共集合GetEventsBydGroup(){
返回EventsBydGroup;
}
public void setEventsBydGroup(集合EventsBydGroup){
this.eventsByIdGroup=eventsByIdGroup;
}
@独身癖
公共集合GetPersononOnGroupByIDGroup(){
返回PersonGroupByIDGroup;
}
public void setPersonononGroupByIDGroup(集合PersonononGroup){
this.personOnGroupByIdGroup=personOnGroup;
}
}
@实体
@表(name=“person”)
公共阶层人士{
私人长途电话;
私有字符串名;
私有字符串lastName;
私有字符串用户名;
私人字符串电子邮件;
私有字符串密码;
私有字符串imageUrl;
私有布尔启用=真;
私人收藏评论;
私人访问权限访问权限BYIDACESS权限;
私人收藏人,私人收藏人;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idPerson”)
公共长getIdPerson(){
返回idPerson;
}
公共无效设置idPerson(长idPerson){
this.idPerson=idPerson;
}
//其他getter和setter方法
@OneToMany(mappedBy=“commentByIdPerson”)
公共集合GetCommentsByDPerson(){
回复评论者;
}
public void setCommentsByIdPerson(集合commentsByIdPerson){
this.commentsByIdPerson=commentsByIdPerson;
}
@许多酮
@JoinColumn(name=“idAccessRights”,referencedColumnName=“idAccessRights”,nullable=false)
公共访问权限GetAccessRightsBydAccessRights(){
返回AccessRightsBydAccessRights;
}
public void setAccessRightsByDacAccessRights(访问权限访问权限sByDacAccessRights){
this.accessRightsByDacAccessRights=accessRightsByDacAccessRights;
}
@独身癖
公共集合GetPersonOnGroupByIderson(){
返回PersonGroupByIDPerson;
}
public void setPersonOnGroupByIderson(集合PersonOnGroupByIderson){
this.personOnGroupByIdPerson=personOnGroupByIdPerson;
}
}
@可嵌入
公共类PersonOnGroupPK实现可序列化{
私人私人;
私人团体;
@许多酮
公众人物getPersonPK(){
返回personPK;
}
公共无效setPersonPK(个人){
this.personPK=人;
}
@许多酮
公共组getGroupsPK(){
返回组spk;
}
公共void setGroupsPK(组){
this.groupsPK=组;
}
}
@实体
@表(name=“personongroup”)
公共类个人组{
私有时间戳;
私人PersonOnGroupPK PersonOnGroupPK;
@DateTimeFormat(iso=DateTimeFormat.iso.DATE\u时间)
@列(name=“joinDate”)
公共时间戳getJoinDate(){
返回日期;
}
public void setJoinDate(时间戳createdAt){
this.joinDate=createdAt;
}
@嵌入ID
public PersonOnGroupPK getPersonOnGroupPK(){
返回PersonGroupPK;
}
public void setPersonononGroupPK(PersonononGroupPK PersonononGroupPK){
this.personOnGroupPK=personOnGroupPK;
}
}