我是springboot的新手,下面是我的代码,我想了解一下hibernate映射



我得到了:

org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; 
nested exception is org.hibernate.MappingException: Could not determine type for: com.xib.assessment.model.Team, at table: agent, for columns: [org.hibernate.mapping.Column(team)]

下面是我的Agent.java

private Long id;
private String firstName;
private String lastName;
private String idNumber;

private Team team;    
@Column(name="team")
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
@OneToOne
private Manager manager;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
} 

public Manager getManager() {
return manager;
}
public void setManager(Manager manager) {
this.manager = manager;
}
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}

team.java

private Long teamId;    
public Long getTeamId() {
return teamId;
}
public void setTeamId(Long teamId) {
this.teamId = teamId;
}
private String name;
@Column(name="agent")
private Agent agent;
@Column(name="manager")
public Manager getManager() {
return manager;
}
public void setManager(Manager manager) {
this.manager = manager;
}
@OneToOne
Manager manager;
public Agent getAgent() {
return agent;
}
public Team() {
super();
}
public void setAgent(Agent agent) {
this.agent = agent;
}
public Team(Long teamId, String name, Agent agent) {
this.teamId = teamId;
this.name = name;
this.agent = agent;
}
public String getName() {
return name;
}
public void setName(String name) {
}

管理员.java

@Id
@GeneratedValue
private Long managerId; 
private Team team;
@Column(name="team")
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
public Manager(Long managerId, Team team, String firstName, String lastName, String idNumber) {
super();
this.managerId = managerId;
this.team = team;
this.firstName = firstName;
this.lastName = lastName;
this.idNumber = idNumber;
}
public Manager() {
}   
public String getFirstName() {
return firstName;
}
public Long getManagerId() {
return managerId;
}
public void setManagerId(Long managerId) {
this.managerId = managerId;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}
private String firstName;
private String lastName;
private String idNumber;

其中:一个经理可以管理多个团队,任何一个团队最多可以由两个经理管理。和:一个代理人只能分配给一个团队,并向一名经理报告。

你如何使用hibernate来映射以上内容,提前感谢

这是TeamManager的示例。请按照代码样式

@Entity
class Manager {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "manager", fetch = FetchType.LAZY)
private List<Team> teams = new ArrayList<>();
}
@Entity
class Team {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private Manager manager;
}

混合字段和方法映射

不要在字段和方法上混合映射注释。在这种情况下,你会有不清楚的错误。

你也可以在这里学习一些

什么是@JoinColumn以及它在Hibernate 中是如何使用的

最好使用控制台应用程序和检查Hibernate生成的SQL来尝试映射。你可以使用这个项目的单元测试来进行

https://github.com/v-ladynev/hibernate-experimental

最新更新