3
回答
JPA2.0联合主键映射问题(外键作为联合主键)
华为云实践训练营,热门技术免费实践!>>>   

如下代码:

1、联合主键类,这个联合主键有两个字段域,每一个字段域都与另外一张表做了关系映射

/**
 * 联合主键
 * @author SECRET
 *
 */
@Embeddable // 标识当前类要作为一个可嵌入的联合主键来用
public class UserStagePropertyPK implements Serializable {
	/**
	 * 玩家
	 */
	private User user ;
	/**
	 * 道具
	 */
	private StageProperty stageProperty ;
	
	public UserStagePropertyPK() {}	
	
	@ManyToOne
	@JoinColumn(name="usp_user_id")
	public User getUser() {
		return user;
	}
	@ManyToOne
	@JoinColumn(name="usp_stageproperty_id")
	public StageProperty getStageProperty() {
		return stageProperty;
	}
}



2、在使用该联合主键的类中如下:
@Entity
@Table(name="t_user_stageproperty")
public class UserStageProperty { 
	/**
	 * 联合主键
	 */
	private UserStagePropertyPK id ;
	/**
	 * 数量
	 */
	private int count = 0 ;
	
	public UserStageProperty() {}
	
	
	@EmbeddedId // 用来标识将一个类作为联合主键
	public UserStagePropertyPK getId() {
		return id;
	}
	@Column(name="usp_count", length=11, columnDefinition="INT(11)", nullable=false)
	public int getCount() {
		return count;
	}
}



问题:在JPA1.0的时候这样配置是没有问题的,但是现在换成了JPA2.0就出现了问题,在@EmbeddedId位置提示如下错误:(Embedded ID class should not contain relationship mappings) ,大概的意思是作为联合主键的类,里面不能包含关系映射,那么在JPA2.0里面联合主键的关系映射怎么做,上面的问题该怎么解决?先在这里谢谢大家了,在网上找了好久没有找到合适的解决方法。


举报
云颖
发帖于4年前 3回/1K+阅
顶部