hibernate 级联删除注解写了不起作用

@SuppressWarnings("serial")
@Entity
@Table(name="user")
public class User extends BaseEntity {

/**
 * 用户名
 */
private String username;
/**
 * 密码
 */
private String password;

public User() {
    super();
}


private List<UserAddress> userAddresses;


//配置一对多
//cascade:为级联操作,里面有级联保存,级联删除等,all为所有 
//fetch:加载类型,有lazy和eager二种
//这个为manytoone中的对象名
@Cascade({CascadeType.SAVE_UPDATE,CascadeType.DELETE})
@OneToMany(fetch=FetchType.EAGER, mappedBy="user_user")
@BatchSize(size=10)
@OrderBy(clause="id asc")
public List<UserAddress> getUserAddresses() {
    return userAddresses;
}

public void setUserAddresses(List<UserAddress> userAddresses) {
    this.userAddresses = userAddresses;
}

/**
 * 简单admin对象
 * @param username 账号
 * @param password 密码
 * @param isAccountEnabled 是否启用
 */
public User(String username, String password) {
    super();
    this.username = username;
    this.password = password;
}

@Column(updatable = true, nullable = false)
public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

@Column(nullable = false)
public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

@Override
public String toString() {
    return "User [username=" + username + ", password=" + password
            + ", userAddresses=" + userAddresses + "]";
}

}

上面是我的实体类, @Cascade({CascadeType.SAVE_UPDATE,CascadeType.DELETE})这句写了并没有起作用,删除的时候还是提示有外键不能删除。这个是怎么回事

3个回答

你要明白 hibernate 级联的意思,级联在我们表之间有外键关联的时候可以通过对象映射 以java 对象的形式展现给我们,
比如一对多,多对多,等都可以用对象来表示出来。但是为了维护表中之间关系的稳定,级联只用于查,改,增,但是不用于 删除。
因为删除会破坏表之间的关系。个人觉得级联用于查询的时候就比较方便,其他操作小心点,你会被坑的,(如果真的需要,请删除外键关联再操作)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (hibernatetest.useraddress, CONSTRAINT FK_lm3lm212adwiaxok0htlu6wdd FOREIGN KEY (user_id) REFERENCES user (id))

这个是我执行删除的时候报的错

你这个是主外键约束的问题吧?是先删除有user_id字段的表信息,再删有id字段的表信息

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hibernate 多对多 级联删除 注解
有两个类:Survey和Questions,问卷类和题目类,它们是多对多的关系,即:一张试卷可以有多个题目,一个题目可以属于多个试卷,我用两个一对多,数据库用中间表来实现,并有第三个类SurveyQuestions. surveuy类如下: [code="java"]//问卷实体:包括各种属性 @Entity @Table(name="_survey") public class Survey { private int id;// 问卷ID private String name;// 问卷标题 private String des;// 问卷描述或者备注 private boolean state;// 状态:是否开放 private SurveyType surveyType;// 问卷类型 private int count;// 问卷数量限制 private Date createTime;// 问卷创建时间 private Date publishTime;// 问卷发布时间 private Date deadline;// 问卷截止提交日期 private String password;// 问卷访问密码 private boolean grade;//是否是打分问卷 @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDes() { return des; } public void setDes(String des) { this.des = des; } public boolean isState() { return state; } public void setState(boolean state) { this.state = state; } @ManyToOne @JoinColumn(name = "type_id") public SurveyType getSurveyType() { return surveyType; } public void setSurveyType(SurveyType surveyType) { this.surveyType = surveyType; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getPublishTime() { return publishTime; } public void setPublishTime(Date publishTime) { this.publishTime = publishTime; } public Date getDeadline() { return deadline; } public void setDeadline(Date deadline) { this.deadline = deadline; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isGrade() { return grade; } public void setGrade(boolean grade) { this.grade = grade; }[/code] questions类 [code="java"]<span></span> @Entity @Table(name="_questions") public class Questions { private int id;// 问题主键ID private QuestionType questionType;// 问题类型 private String head;// 问题题目 private String body;// 问题主体 private String answer;// 预留字段,如果是网上答卷,则是答案 private String remarks;// 预留字段,备注 private int number;// 选项个数 @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getAnswer() { return answer; } public void setAnswer(String answer) { this.answer = answer; } public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "type_id") public QuestionType getQuestionType() { return questionType; } public void setQuestionType(QuestionType questionType) { this.questionType = questionType; } @Column(nullable = true) public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } }[/code] surveyQuestion类 [code="java"]package com.questionnaire.model; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name = "_surveyquestion") public class SurveyQuestion { private int id;// 问卷题库关联表ID,主键 private Survey survey;// 对应问卷ID,外键 private Questions questions;// 对应题目ID,外键 private int number;// 题号,即该题目在本问卷的题号 @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } this.userIp = userIp; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "survey_id") public Survey getSurvey() { return survey; } public void setSurvey(Survey survey) { this.survey = survey; } @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "questions_id") public Questions getQuestions() { return questions; } public void setQuestions(Questions questions) { this.questions = questions; } }[/code] 我想实现删除题目时删除_questions表里的数据,同时删除_surveyQuestion表里的数据。当然survey同样?怎样实现呢?
hibernate级联删除不成功外键设置成null
A,B两个表 A和B是一对多的关系,A中的cascade已经设计为all,数据库里面也设计了级联删除,而且在数据库删除是成功的,但是我用hibernate删除的时候确无法删除 他只是把B中的记录的外健设置成null,希望大家帮我解决 感激不尽
hibernate级联,删除一方不删除多方,只是把多方的外键置空,请问怎样设置
hibernate级联,删除一方不删除多方,只是把多方的外键置空,请问怎样设置 [b]问题补充:[/b] 也就是说这个问题在级联关系中没有对应,需要在删除一方前手动清空多方的外键对应么
关于hibernate级联删除,需要多条sql语句的问题
<p>数据库模式:</p> <pre name="code" class="sql">Board(board_id) Article(article_id,board_id) Comment(comment_id, article_id)</pre> <p> <br><br>设置级联删除,也就是删除Board时,会自动级联删除和Board关联的所有Article,以及和所有被删Article关联的所有Comment。</p> <p> </p> <p>配置映射文件后,效果达到了,全部都级联删除了,但是生成的SQL语句非常怪异。<br><br>按预想来说,每部分的级联删除应该使用外键直接删除,如:</p> <pre name="code" class="sql">delete from article where board_id = ? delete from comment where article_id = ?</pre> <p> <br><br>可是hibernate却使用主键删除,从而产生了非常多得sql语句,如:</p> <pre name="code" class="sql">delete from comment where comment_id = ? ... ... ... delete from article where article_id = ? delete from comment where comment_id = ? ... ... ... delete from article where article_id = ? ............ delete from board where board_id = ? </pre> <p> <br>是配置的问题吗?还是hibernate就是这样操作的呢?、</p> <p>如果是这样的话,删除关联众多的对象的话不是需要非常多得SQL语句,不是很影响性能么?</p> <p>如何才能简化hibernate产生的sql语句呢?最好是通过配置hibernate实现。</p> <p>如果这就是Hibernate的特性的话,那为什么要这么做呢?</p>
hibernate的级联删除
hibernate的级联删除似乎都是在主表的数据删除后,副表相关的字段被清除掉,请问,能不能在主表的数据删除后,副表的整条数据被删除掉,也就是说以前执行的是一个UPDATE,一个DELETE语句,现在要执行2个DELETE语句 [b]问题补充:[/b] 主表usergroup 副表usergroup_authority 一对多关系 当我执行删除主表的操作后: 这个是现在打印出来的语句:Hibernate: update ids.dbo.usergroup_authority set usergroup_id=null where usergroup_id=? Hibernate: delete from ids.dbo.usergroup where usergroup_id=? 我想变成这样:Hibernate: delete from ids.dbo.usergroup_authority where usergroup_id=? Hibernate: delete from ids.dbo.usergroup where usergroup_id=? 能不能用HIBERNATE配置解决? [b]问题补充:[/b] cascade="all-delete-orphan" 已经是这样设置,没用的
hibernate一对多级联保存更新出问题,但可以级联删除
hibernate级联删除可以,但是级联保存和更新都不行,是配错了什么吗, @ManyToOne @JoinColumn(name = "customerId") @Cascade({ CascadeType.ALL }) @OneToMany(fetch = FetchType.EAGER) @JoinColumn(name = "customerId") @Cascade({ CascadeType.ALL })
hibernate级联删除操作失败
对hibernate刚入手,不得其精华 配置文件如下 主表 <class name="PrototypeOversea" table="T_MT_PROTOTYPEOVERSEA"> <id name="sid" type="java.lang.Integer"> <column name="SID" precision="10" scale="0" /> <generator class="sequence"> <param name="sequence">SEQ_MT_PROTOOVERSEA</param> </generator> </id> <set name="items" cascade="all" inverse="true" lazy="false" order-by="ITEMID"> <key> <column name="PROTOTYPEOVERSEAID" /><!-- 子表的外键 --> </key> <one-to-many class="PrototypeOverseaItem" /><!-- 子表的关联class --> </set> </class> 子表 <class name="PrototypeOverseaItem" table="T_MT_PROTOTYPEOVERSEAITEM"> <id name="itemId" type="java.lang.Integer"> <column name="ITEMID" precision="10" scale="0" /> <generator class="sequence"> <param name="sequence">SEQ_MT_PROTOOVERSEA_ITEM</param> </generator> </id> <!-- class 指定主表关联的class --> <many-to-one name="pos" class="PrototypeOversea" fetch="select" not-null="true"> <column name="PROTOTYPEOVERSEAID" precision="10" scale="0"> </column><!-- column为字表里和主表关联的外键 --> </many-to-one> </class> 现在的问题是,当主表的set集合items减少时,子表不会自动删除set里没有的记录 目前,主表的set集合items增加时,子表会自动添加set添加的记录。
hibernate级联删除 spring报错!
现有机构,部门,员工,三张表,其主键一次引用,就是部门引用机构主键,员工引用部门主键,部门联系人字段引用员工主键,先在想删除机构,其下属部门 员工级联删除,报了org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.office.vo.BranchInfo#2]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.office.vo.BranchInfo#2] Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.office.vo.BranchInfo#2]错误。 以下是三个表的xml。谁有好的办法解决呢? 谢谢! <hibernate-mapping> <class name="com.office.vo.DepartInfo" table="departinfo" catalog="cardsale"> <id name="departId" type="java.lang.Integer"> <column name="DepartId" /> <generator class="increment" /> </id> <many-to-one name="branchinfo" class="com.office.vo.BranchInfo" fetch="select" cascade="all" lazy="false"> <column name="BranchId" not-null="true" /> </many-to-one> <many-to-one name="userinfo" class="com.office.vo.UserInfo" fetch="select" cascade="all" lazy="false"> <column name="PrincipalUser" not-null="false" /> </many-to-one> <property name="departName" type="java.lang.String"> <column name="DepartName" length="50" not-null="false" /> </property> <property name="connectNo" type="java.lang.Long"> <column name="ConnectNo" not-null="true" /> </property> <property name="connectMobileTelNo" type="java.lang.Long"> <column name="ConnectMobileTelNo" not-null="true" /> </property> <property name="faxes" type="java.lang.Long"> <column name="Faxes" not-null="true" /> </property> <set name="userinfos" inverse="true" lazy="false"> <key> <column name="departId" not-null="false" ></column> </key> <one-to-many class="com.office.vo.UserInfo" /> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="com.office.vo.BranchInfo" table="branchinfo" catalog="cardsale"> <id name="branchId" type="java.lang.Integer"> <column name="BranchId" /> <generator class="increment" /> </id> <property name="branchName" type="java.lang.String"> <column name="BranchName" length="50" not-null="true" /> </property> <property name="branchShortName" type="java.lang.String"> <column name="BranchShortName" length="50" not-null="true" /> </property> <set name="departinfos" inverse="true" lazy="false" > <key> <column name="BranchId" not-null="false" /> </key> <one-to-many class="com.office.vo.DepartInfo" /> </set> </class> </hibernate-mapping> hibernate-mapping> <class name="com.office.vo.UserInfo" table="userinfo" catalog="cardsale"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="increment" /> </id> <many-to-one name="departinfo" class="com.office.vo.DepartInfo" fetch="select" lazy="false" cascade=""> <column name="DepartId" /> </many-to-one> <many-to-one name="userstate" class="com.office.vo.UserState" fetch="select" lazy="false"> <column name="UserState" /> </many-to-one> <many-to-one name="roleinfo" class="com.office.vo.RoleInfo" fetch="select" lazy="false"> <column name="RoleId" /> </many-to-one> <property name="userId" type="java.lang.String"> <column name="UserId" length="50" /> </property> <property name="userName" type="java.lang.String"> <column name="UserName" length="50" /> </property> <property name="pwd" type="java.lang.String"> <column name="PWd" length="50" /> </property> <property name="gender" type="java.lang.Integer"> <column name="Gender" /> </property> <set name="departinfos" inverse="true"> <key> <column name="PrincipalUser" not-null="false" /> </key> <one-to-many class="com.office.vo.DepartInfo" /> </set> </class> </hibernate-mapping>
hibernate级联查询中,如何对级联的结果进行分页
两个类:主题topic,回复post 现在要查看主题时同时列出所有的回复内容, 用hibernate级联查询:从topic级联查询出post,请问如何对post分页? 目前我是先查topic,然后单独查post进行分页,没有使用级联查询。
hibernate级联删除报错,错误信息如下,求解答?
hibernate级联删除报错Cannot delete or update a parent row: a foreign key constraint fails (`jk28`.`user_info_p`, CONSTRAINT `FK2BF43F36EB6FED6` FOREIGN KEY (`MANAGER_ID`) REFERENCES `user_p` (`USER_ID`)) 这是哪里出现了问题了呢?求大神解答?? # User实体类 public class User extends BaseEntity{ private String id; private Dept dept;//用户与部门 多对一 private Userinfo userinfo ; //用户与用户扩展信息 一对一 //private Set<Role> roles = new HashSet<Role>(0);//用户与角色 多对多 private String userName;//用户名 private String password;//密码 要加密 private Integer state;//状态 public String getId() { return id; } public void setId(String id) { this.id = id; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public Userinfo getUserinfo() { return userinfo; } public void setUserinfo(Userinfo userinfo) { this.userinfo = userinfo; } // public Set<Role> getRoles() { // return roles; // } // public void setRoles(Set<Role> roles) { // this.roles = roles; // } } **# Userinfo实体类** public class Userinfo extends BaseEntity { private String id; private String name;//姓名 private User manager;//用户与直属领导 多对一 private Date joinDate;//入职时间 private Double salary;//薪水 private Date birthday; //出生年月 private String gender; //性别 private String station;//岗位 private String telephone;//电话 private Integer degree;//等级 private String remark;// 备注 private Integer orderNo;//排序号 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public User getManager() { return manager; } public void setManager(User manager) { this.manager = manager; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getStation() { return station; } public void setStation(String station) { this.station = station; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Integer getDegree() { return degree; } public void setDegree(Integer degree) { this.degree = degree; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Integer getOrderNo() { return orderNo; } public void setOrderNo(Integer orderNo) { this.orderNo = orderNo; } } **# User映射文件****** <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.jk.domain"> <class name="User" table="USER_P" dynamic-insert="true" dynamic-update="true"> <id name="id" column="USER_ID"> <generator class="assigned"></generator> </id> <property name="userName" column="USER_NAME"></property> <property name="password" column="PASSWORD"></property> <property name="state" column="STATE"></property> <property name="createBy" column="CREATE_BY"></property> <property name="createDept" column="CREATE_DEPT"></property> <property name="createTime" column="CREATE_TIME"></property> <property name="updateBy" column="UPDATE_BY"></property> <property name="updateTime" column="UPDATE_TIME"></property> <!-- private Dept dept;//用户与部门 多对一 --> <many-to-one name="dept" class="Dept" column="DEPT_ID"></many-to-one> <!-- private Userinfo userinfo ; //用户与用户扩展信息 一对一 --> <one-to-one name="userinfo" class="Userinfo" cascade="all"></one-to-one> <!-- private Set<Role> roles = new HashSet<Role>(0);//用户与角色 多对多 <set name="roles" table="ROLE_USER_P"> <key column="USER_ID"></key> <many-to-many class="Role" column="ROLE_ID"></many-to-many> </set> --> </class> </hibernate-mapping> # Userinfo映射文件****** <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.jk.domain"> <class name="Userinfo" table="USER_INFO_P"> <id name="id" column="USER_INFO_ID"> <generator class="assigned"> </generator> </id> <property name="name" column="NAME"></property> <property name="joinDate" column="JOIN_DATE"></property> <property name="salary" column="SALARY"></property> <property name="birthday" column="BIRTHDAY"></property> <property name="gender" column="GENDER"></property> <property name="station" column="STATION"></property> <property name="telephone" column="TELEPHONE"></property> <property name="degree" column="DEGREE"></property> <property name="remark" column="REMARK"></property> <property name="orderNo" column="ORDER_NO"></property> <property name="createBy" column="CREATE_BY"></property> <property name="createDept" column="CREATE_DEPT"></property> <property name="createTime" column="CREATE_TIME"></property> <property name="updateBy" column="UPDATE_BY"></property> <property name="updateTime" column="UPDATE_TIME"></property> <!-- private User manager;//用户与直属领导 多对一 <many-to-one name="manager" class="User" column="MANAGER_ID"></many-to-one>--> </class> </hibernate-mapping>
请教如何通过配置禁用hibernate级联操作?
请教如何通过配置禁用hibernate级联操作? :idea:
Hibernate 级联刷新、删除问题
Hibernate 版本hibernate-core-4.0.0.Final <br /> <br />Users和Orders两个实体 <br /> <br />一个Users对应多个Orders&nbsp; 一对多 <br />多个Orders对应一个Users&nbsp; 多对一 <br /> <br /> <br />在Users实体中配置以下 <br /><pre name="code" class="java">@OneToMany(mappedBy="users",cascade={CascadeType.ALL}) private List&lt;Orders&gt; orders; public List&lt;Orders&gt; getOrders() { return orders; } public void setOrders(List&lt;Orders&gt; orders) { this.orders = orders; }</pre> <br /> <br />级联删除的时除 <br /><pre name="code" class="java">Users u = (Users)session.get(Users.class, 52); List&lt;Orders&gt; l = u.getOrders(); Orders o = null; for(Iterator&lt;Orders&gt; it = l.iterator();it.hasNext();) { o = it.next(); if(o.getOrderId()==57) { //需要先从List中删除,再从session中删除 it.remove(); session.delete(o); } }</pre> <br />为什么从list集合中删除,还需要再手动从session中删除,CascadeType已设置为ALL了啊 <br /> <br />级联刷新 <br /><pre name="code" class="java">//测试refresh,user中的list Session s1 = HibernateUtils.getSession(); Users u = (Users)s1.get(Users.class, 52); List list = u.getOrders(); //断点执行到此处,我修改数据库中Orders中的name值为100后refresh s1.refresh(u); List list2 = u.getOrders(); //断点执行到此处,查看list2集合Orders的name值为旧值1,并不是数据库中最新的100 s1.close();</pre> <br />为什么此处的级联刷新对list不起作用,只对Users非关系映射的属性起作用CascadeType已设置为ALL了啊 <br /> <br />
hibernate中级联删除的配置!!!!!!
在<set>中配置的cascade=all,但是删除的时候,主表删除了,有外键的表没有删除,只是显示更新语句??????Hibernate: update voter.score set gid=null where gid=? Hibernate: delete from voter.grid where gid=? 就显示了这两条SQL语句,怎么实现级联删除,出现两条删除语句啊!!!!!!!!!我现在要,级联增加,级联删除,所以只能用all,save-update,delete-or……什么的这两个满足不了我的业务需要!!我现在是哪里出了问题??????????????????????
Hibernate @OneToOne 级联删除 删除不掉
用户实体类: ``` @Entity @Table(name = "T_USER") public class User { ...... @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "user_info_id", unique = true) private UserInfo userInfo; ...... } ``` 用户基本信息实体类 ``` @Entity @Table(name = "T_USER_INFO") public class UserInfo { ...... @OneToOne(mappedBy = "userInfo", orphanRemoval = true) private User user; ...... } ``` 用QueryDSL删除: ``` new JPADeleteClause(entityManager,entityPath).where(((SimpleExpression<ID>) idPath).in(ids)).execute() ``` User实体类中还有一个多对多级联的角色列表,在删除User记录的时候,后台会自动发条SQL去删除UserRole关联表中的数据。但是,在删除User数据时,后台却不发删除UserInfo记录的SQL。 PS:明明设置了CascadeType.ALL,级联删除虽然不发SQL不好使,但是可以级联增加和修改。 希望哪位大神加以指点,先谢谢了!
hibernate级联删除时无法删除,一对多双向关联,一是Consult 多是TbFiles
一的配置:<set name="tbFiles" inverse="true" cascade="all"> <key column="consultid" not-null="true"/> <one-to-many class="com.project.dto.TbFiles"/> </set> 多的配置: <many-to-one name="consult" class="com.project.dto.Consult" fetch="select" cascade="all"> <column name="consultid" not-null="true"/> </many-to-one> 执行代码: public void delConsult(String[] ids){ HibernateTemplate hTemplate=this.getHibernateTemplate(); Consult consult=new Consult(); for(String id:ids){ consult.setId(id); hTemplate.delete(consult); } hTemplate.flush(); }
hibernate级联更新没有删除从表未关联的数据
小弟在使用Hibernate级联更新的时候,发生以下情况: TfZbTxZbDyDO关联了一个或多个TfZbTxZbDyWdDO A、B、c; 我想给他更新成关联B、c、D,调用saveOrUpdate方法执行成功,可是发现A数据根本没有删除。 变成了TfZbTxZbDyDO关联4个 A、B、c、D四个对象,A对象关联没有删掉。 TfZbTxZbDyWdDO 是一个中间表,只需要删除,如果是删除主表,从表会被删除,也就是级联删除和保存可以,就是更新的时候没有去掉多余的关联项。 Hibernate配置如下: <set name="tfZbTxZbDyWdDOes" inverse="true" cascade="all"> <key> <column name="ZBDYBH" length="36" not-null="true"> </column> </key> <one-to-many class="TfZbTxZbDyWdDO" /> </set> 这个问题搞了好久,cascade设成其他也不行,不能用空字段,inverse=false也试了。请各位大侠 赐教! [b]问题补充:[/b] 谢谢,但是我改成cascade="all-delete-orphan" 以后出现 : A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: TfZbTxZbDyDO.tfZbTxZbDyWdDOes 正在想办法。
hibernate级联关系的问题
[size=large][color=blue]我做项目一直是用程序来控制级联关系 没用真正的直接用hibernate的方式去做 想问问实际的项目中级联关系的表很多,也很复杂 如何用hibernate的级联的方式去处理 谢谢[/color][/size]
Hibernate框架使用JPA注解时,使用的主键生成策略
Hibernate框架使用JPA注解,在ID加上@GeneratedValue注解,使用的是什么主键生成策略?数据库生成了一张hibernate_sequence表。使用的是M有SQL数据库
hibernate级联查询的问题
根据项目要求,在每个表中加了删除标志deleted_flag,删除用1标志,未删除用0标志. 在用hibernate本身的级联查询会把之前的子表已经删除的数据也检索出来. 求最好的解决方法. [b]问题补充:[/b] 如果是一对一呢?怎么解决/ 您这上面只有对集合进行 [b]问题补充:[/b] 没有其他方法了吗?把one-to-one改成one-to-many,也太奇怪了.换个角度来说,就是换了它们2者的关系了
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载 点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问