Hibernate的和问题:操作人:\x05\x05书:我要新添加书:Book book = new Book();book.setName("aaa");Operator operator2 = new Operator();\x05operator2.setId(1);\x05//注意:此id数据库中已存在book.setOperator2(operator2);operato
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/29 01:05:34
![Hibernate的和问题:操作人:\x05\x05书:我要新添加书:Book book = new Book();book.setName(](/uploads/image/z/4371064-16-4.jpg?t=Hibernate%E7%9A%84%E5%92%8C%E9%97%AE%E9%A2%98%EF%BC%9A%E6%93%8D%E4%BD%9C%E4%BA%BA%EF%BC%9A%5Cx05%5Cx05%E4%B9%A6%EF%BC%9A%E6%88%91%E8%A6%81%E6%96%B0%E6%B7%BB%E5%8A%A0%E4%B9%A6%EF%BC%9ABook+book+%3D+new+Book%28%29%3Bbook.setName%28%22aaa%22%29%3BOperator+operator2+%3D+new+Operator%28%29%3B%5Cx05operator2.setId%281%29%3B%5Cx05%2F%2F%E6%B3%A8%E6%84%8F%EF%BC%9A%E6%AD%A4id%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%E5%B7%B2%E5%AD%98%E5%9C%A8book.setOperator2%28operator2%29%3Boperato)
Hibernate的和问题:操作人:\x05\x05书:我要新添加书:Book book = new Book();book.setName("aaa");Operator operator2 = new Operator();\x05operator2.setId(1);\x05//注意:此id数据库中已存在book.setOperator2(operator2);operato
Hibernate的和问题:
操作人:
\x05
\x05
书:
我要新添加书:
Book book = new Book();
book.setName("aaa");
Operator operator2 = new Operator();
\x05operator2.setId(1);\x05//注意:此id数据库中已存在
book.setOperator2(operator2);
operator2.getBookTs().add(book);
bookDAO.save(book);
问题就在这里,..
在many-to-one中,如果设置了cascade="persist",则就会存进书,并设置好了和人的关联,并不会去更新operator表;
如果没有设置cascade="persist"或者cascade="all",则在存进书的同时,也会更新operator表,发出sql语句:Hibernate:update operator_t set name=?,password=?,system=?,reader=?,book=?,borrow=?,query=?where id=?,这时候,operator表中对应的id为1的字段被更新,其它列表全为null值了.
这到底是怎么回事?
Hibernate的和问题:操作人:\x05\x05书:我要新添加书:Book book = new Book();book.setName("aaa");Operator operator2 = new Operator();\x05operator2.setId(1);\x05//注意:此id数据库中已存在book.setOperator2(operator2);operato
hibernate在执行sava或者update的时候不会触发cascade="persist" .所以第一种情况并不会级联修改operator的数据.cascade="all" 会触发级联的,会去更新operator的内容.而你这个operator除了id之外的属性都为null,更新到数据库就都是null了.