检索记录的用户对象并将其另存为外键

时间:2014-10-13 09:48:28

标签: java sql spring hibernate spring-mvc

从表单中保存一些数据时,我还需要将FK添加到Record表中。 FK是User.Id. 我知道如何从表单上的输入字段保存数据,但是如何设置FK(int值):

@ManyToOne
@JoinColumn(name = "id")
@Cascade({CascadeType.ALL})
private User user;

是否有某种方法可以检索与已登录用户相关的对象并进行如下操作:record.setUser(user)?
我用谷歌搜索了它,但我没有找到如何实现这一点。

这是我的实体类。

@Entity
public class Record implements java.io.Serializable{

    @Id
    @GeneratedValue
    private int recordId;

    private String recordName;
    private String recordComment;
    private Date recordDate;
    private Integer price;
    @ManyToOne
    @JoinColumn(name = "userId", insertable = true, updatable = false)
    @Cascade({CascadeType.ALL})
    private User user;

    ......
    }

@Entity
@Table(name = "system_user")
public class User implements java.io.Serializable{

    @Id
    @GeneratedValue
    private int userId;

    @NotEmpty
    @Email
    private String email;
    @Size(min=2, max=30)
    private String name;
    private String enabled;
    @NotEmpty
    private String password;

    private String confirmPassword;

    @Enumerated(EnumType.STRING)
    @Column(name = "user_role")
    private Role role;

      @OneToMany(fetch = FetchType.EAGER,mappedBy = "user", orphanRemoval=true)
      @Cascade({CascadeType.ALL})
      private List<Record> records;

      public void addToRecord(Record record) {
        record.setUser(this);
        this.records.add(record);

      }

      ....
}

这是我将数据保存到DB的方式:

 @RequestMapping(value = "/protected/add", method = RequestMethod.POST)
    public String addCost (@ModelAttribute("record") Record record,HttpSession session){
        User user = userManager.getUserObject(userManager.getUserId(session.getAttribute("currentUser").toString()));

        user.addToRecord(record);
        recordService.addRecord(record);
        return "redirect:/protected/purse";
    }

DAO:

 public void addRecord(Record record) {
        sessionFactory.getCurrentSession().save(record);

    }

更新:问题已部分解决,上面的代码对我来说很好。

1 个答案:

答案 0 :(得分:0)

您还需要使用以下代码

创建User对象并在Record对象中设置用户对象
record.setUser(userObj);

用户外键将自动保存在数据库中。