mappedby 详解

mappedby=?,后面的这个问号跟拥有方,以下是实例。


Role.java


package com.nbg.nuskin.oa.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;

/**
 * 
 * 
 * @author Administrator
 * 
 */
@Entity
public class Role {
	private long id;
	
	private Set<Privilege> privileges = new HashSet<Privilege>();

	@Id
	@GeneratedValue
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	//大家一定要注意这里,没有mappedby,拥有方是属于privilege的
	@ManyToMany
	public Set<Privilege> getPrivileges() {
		return privileges;
	}

	public void setPrivileges(Set<Privilege> privileges) {
		this.privileges = privileges;
	}

}




Privilege.java


package com.nbg.nuskin.oa.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;

@Entity
public class Privilege {
	private Long id;
	private Set<Role> roles = new HashSet<Role>();

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	//拥有方是Privilege.java
	@ManyToMany(mappedBy = "privileges")
	public Set<Role> getRoles() {
		return roles;
	}

	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}

}


下面是RoleAction.java对Role的操作


package com.nbg.nuskin.oa.action;

import java.util.HashSet;
import java.util.List;

import javax.annotation.Resource;

import com.nbg.nuskin.oa.domain.Privilege;
import com.nbg.nuskin.oa.domain.Role;
import com.nbg.nuskin.oa.service.PrivilegeService;
import com.nbg.nuskin.oa.service.RoleService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class RoleAction extends ActionSupport implements ModelDriven<Role> {
	private RoleService roleService;
	
	protected Role model = new Role();

	public RoleService getRoleService() {
		return roleService;
	}

	@Resource(name = "roleService")
	public void setRoleService(RoleService roleService) {
		this.roleService = roleService;
	}

	/**
	 * 设置权限
	 * 
	 * @return
	 */
	public String setPrivilege() {
		Role role = roleService.getById(model.getId());
		System.out.println(role.getName()+";"+role.getDescription());
		List<Privilege> privileges = privilegeService.getByIds(privilegeIds);
		
		role.setPrivileges(new HashSet<Privilege>(privileges));
		roleService.update(role);
		return "toList";
	}

	public Long[] getPrivilegeIds() {
		return privilegeIds;
	}

	public void setPrivilegeIds(Long[] privilegeIds) {
		this.privilegeIds = privilegeIds;
	}

}
只有这样设置mappeby,在上面的action中才能够操作相应的privilege


mappedby原理:被拥有方改变,即拥有方主动关联操作关联关系;拥有方改变,不一定操作相关的关联关系

上面的mappedby如果设在roles这边,privileges就不会进行sql的update操作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/u/2325575/blog/496394

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值