Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hibernate/JPA合并vs saveOrUpdate_Hibernate_Jpa_Merge - Fatal编程技术网

hibernate/JPA合并vs saveOrUpdate

hibernate/JPA合并vs saveOrUpdate,hibernate,jpa,merge,Hibernate,Jpa,Merge,我使用SpringJPA 我有两个实体时间表和用户。他们有多对一的关系。我把它们定义为 @Entity @Table(name = "timesheet") public class TimeSheet implements java.io.Serializable { ... private User user; ...... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", refer

我使用SpringJPA

我有两个实体时间表和用户。他们有多对一的关系。我把它们定义为

@Entity
@Table(name = "timesheet")
public class TimeSheet implements java.io.Serializable {
... 
private User user;
......

    @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "user_id", referencedColumnName = "user_id", nullable = false)
        public User getUser() {
            return user;
        }

        public void setUser(User user) {
            this.user = user;
        }

更新2:


执行哪些查询?它应该只加载您要求合并的时间表。请使用hibernate格式化SQL。format_SQL=true并将其作为问题的更新发布。这里看不懂。引发了什么会话异常?您可能需要查看。请将完整的SQL select查询发布到更新时执行的一个实例。时间表是否用@EntityselectBeforeUpdate=true注释?执行哪些查询?它应该只加载您要求合并的时间表。请使用hibernate格式化SQL。format_SQL=true并将其作为问题的更新发布。这里看不懂。引发了什么会话异常?您可能需要查看。请将完整的SQL select查询发布到更新时执行的一个实例。时间表是否用@EntityselectBeforeUpdate=true注释?
@Entity
@Table(name = "user")
public class User implements java.io.Serializable {

...

private List<TimeSheet> timesheet = ShrinkableLazyList
    .decorate(new ArrayList(), FactoryUtils
            .instantiateFactory(TimeSheet.class));
...


    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    public List<TimeSheet> getTimesheet() {
        return timesheet;
    }

    public void setTimesheet(List<TimeSheet> timesheet) {
        this.timesheet = timesheet;
    }
........................................
Hibernate: select timesheet0_.timesheet_id as ........... 
Hibernate: select timesheet0_.timesheet_id as ........... 
Hibernate: select timesheet0_.timesheet_id as ........... 
Hibernate: select timesheet0_.timesheet_id as ........... 
Hibernate: select timesheet0_.timesheet_id as .........
     .........................................
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public TimeSheet saveTimeSheet(TimeSheet timeSheet) {
//  Session s=entityManager.unwrap(HibernateEntityManager.class).getSession();
//  s.saveOrUpdate(timeSheet);
    TimeSheet result = entityManager.merge(timeSheet);
//      TimeSheet result=timeSheet;
        return result;

}