当前位置: 代码迷 >> J2EE >> annotation 注解实现非主键关联,该如何处理
  详细解决方案

annotation 注解实现非主键关联,该如何处理

热度:630   发布时间:2016-04-21 20:52:40.0
annotation 注解实现非主键关联
怎样实现非主键一对多双向关联
数据表:
CREATE TABLE `module` (
 `module_id` INT(11) NOT NULL AUTO_INCREMENT,
 `module_code` VARCHAR(32) NOT NULL COMMENT '模块编码',
 `module_name` VARCHAR(64) NOT NULL COMMENT '模块名称',
PRIMARY KEY (`module_id`)
 )
 CREATE TABLE `user_permission` (
 `permission_id` INT(11) NOT NULL AUTO_INCREMENT,
 `product_group_id` VARCHAR(32) NOT NULL COMMENT '外键关联sys_application表的app_code', 
        PRIMARY KEY (`permission_id`)
 ) 
实例:
@Entity
@Table(name ="module")
public class Module{
@Id
@Column(name ="module_id")
@GeneratedValue           
private Integer id;

@Column(name="module_code")
private String moduleCode;

@OneToMany(mappedBy = "module",cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE},fetch=FetchType.LAZY)
@JoinColumn(name="module_code")
private Set<UserPermission> userPermission;
}
@Entity
@Table(name ="user_permission")
public class UserPermission{
@Id
@Column(name ="permission_id")
@GeneratedValue           
private Integer id;

@Column(name="product_group_id")
private String productGroupId;
@ManyToOne(targetEntity = Module.class,fetch=FetchType.LAZY)
@JoinColumn(name="module_group_id",insertable = false, updatable = false,referencedColumnName="module_code")
private Module module;
}

------解决方案--------------------
ClassCastException,类型转换错误,你把Module 类转换为Serializable了。
你这种注解方式已经严重的不提倡了,配置文件多好。
------解决方案--------------------
hibernate配置实体类。
  相关解决方案