я новичок в Springboot и пытаюсь разобраться в отображении спящего режима ниже, это мой код - PullRequest
0 голосов
/ 25 марта 2020

и я получаю:

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)]

ниже мой агент. 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;
}

команда. 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 для сопоставления вышесказанного, заранее спасибо

1 Ответ

0 голосов
/ 25 марта 2020

Это пример для Team и Manager. Следуйте стилю кода, пожалуйста

@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

Лучше поэкспериментировать с отображениями, используя консольное приложение и проверяя SQL, сгенерированный Hibernate. Вы можете использовать модульные тесты из этого проекта для этого

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...