如何使用Hibernate/JPA删除多个具有额外列的表

如何使用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

我在一个表中关联了两个表,与此模型类似:

如何在不删除Person或Groups表的情况下从Person或Groups表中删除记录?使用级联还是删除孤立?或者有没有另一种方法不被冬眠覆盖

这些实体是:

    @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;
}
}