关于@OneToOne

[size=large]User表[/size]
@Entity
@Table(name = "user")
public class User implements Serializable {
private static final long serialVersionUID = 6460630554415231725L;
public User() {
}
private Integer userId;
private String userName;
private String password;
private Integer authority;
private Integer employeeId;
private Employee employee;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@Column(length = 15)
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(length = 15)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public void setAuthority(Integer authority) {
    this.authority = authority;
}

@Column(length = 1)
public Integer getAuthority() {
    return authority;
}

public void setEmployeeId(Integer employeeId) {
    this.employeeId = employeeId;
}

public Integer getEmployeeId() {
    return employeeId;
}

public void setEmployee(Employee employee) {
    this.employee = employee;
}

[color=red] [b]@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "employeeid")
public Employee getEmployee() {
return employee;
}[/b][/color]
}
[size=large]Employee表[/size]
@Entity
@Table(name = "employee")
public class Employee implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 984272591543594665L;

private Integer employeeId;

private String employeeName;

private String sex;

private Integer age;

private String address;

private Integer deptId;

public Integer getDeptId() {
    return deptId;
}

public void setDeptId(Integer deptId) {
    this.deptId = deptId;
}

public Integer getFilialeId() {
    return filialeId;
}

public void setFilialeId(Integer filialeId) {
    this.filialeId = filialeId;
}

public Integer getPositionId() {
    return positionId;
}

public void setPositionId(Integer positionId) {
    this.positionId = positionId;
}

private Integer filialeId;

private Integer positionId;

private String phone;

private String email;

private String remark;


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getEmployeeId() {
    return employeeId;
}

public void setEmployeeId(Integer employeeId) {
    this.employeeId = employeeId;
}

@Column(length = 20)
public String getEmployeeName() {
    return employeeName;
}

public void setEmployeeName(String employeeName) {
    this.employeeName = employeeName;
}

@Column(length = 2)
public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

@Column(length = 3)
public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

@Column(length = 20)
public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

@Column(length = 30)
public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getRemark() {
    return remark;
}

public void setRemark(String remark) {
    this.remark = remark;
}

然后我设了hibernate自动建表,@JoinColu(name="[color=red]employeeId[/color]")就报
org.hibernate.MappingException: Repeated column in mapping for entity: com.st.po.User column: employeeId (should be mapped with insert="false" update="false")
然后我把employeeid中的[color=red]I[/color]改成小写,@JoinColu(name="[color=red]employeeid[/color]"),又建表成功了,求解!!!!!

User类的这两个成员变量:private Integer employeeId会在数据里映射生成一个叫employeeId的字段;private Employee employee会默认在数据库里映射生成一个叫employee_id的字段,如果想给employee_id改名就用@JoinColumn(name="**"); 你现在把employee_id改名为employeeId,而employeeId这个字段本来就已经存在了,同时存在两个同名的字段,当然会产生冲突!
你的本意应该是让User类与Employee类做个关联映射,你把private Integer employeeId这项去掉就可以了!当你在User类里做了private Employee employee这样的关联后, Hibernate会自动建立对应于这个关联的字段:employee_id

public Integer getEmployeeId() {
return employeeId;
}

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "employeeid")
public Employee getEmployee() {
return employee;
}

如果你不把大写I改为小写的话,这里的生成字段名字就发生冲突了!Repeated column 是字段重复的意思!