Создание сущности JPA

#java #mysql #jpa #jpa-2.1

#java #mysql #jpa #jpa-2.1

Вопрос:

Я пытался создать сущность JPA, используя схему базы данных образца Mysql, JPA-инструменты Eclipse JPA entites генерируются с использованием i am для установления связи сущностей для приведенных ниже сценариев и таблиц

  1. Таблица Employee: в таблицах Employee есть поля reportsto, которые ссылаются на employee, т.е. Один сотрудник отчитывается перед другим сотрудником

  2. Таблица Office: в одном офисе может быть более одного сотрудника

Ниже приведены сущности JPA :

 @Entity
@Table(name="employees")
@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e")
public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;

    private String email;

    private String extension;

    private String firstName;

    private String jobTitle;

    private String lastName;

    //bi-directional one-to-one association to Customer
    @OneToOne(mappedBy="employee")
    private Customer customer;

    //bi-directional many-to-one association to Office
    @ManyToOne
    @JoinColumn(name="officeCode", referencedColumnName="officeCode")
    private Office office;

    //bi-directional many-to-one association to Employee
    @ManyToOne
    @JoinColumn(name="reportsTo", referencedColumnName="employeeNumber")
    private Employee employee;

    //bi-directional many-to-one association to Employee
    @OneToMany(mappedBy="employee")
    private List<Employee> employees;

}
  

Описание таблицы

 CREATE TABLE `employees` (
  `employeeNumber` int(11) NOT NULL,
  `lastName` varchar(50) NOT NULL,
  `firstName` varchar(50) NOT NULL,
  `extension` varchar(10) NOT NULL,
  `email` varchar(100) NOT NULL,
  `officeCode` varchar(10) NOT NULL,
  `reportsTo` int(11) DEFAULT NULL,
  `jobTitle` varchar(50) NOT NULL,
  PRIMARY KEY (`employeeNumber`),
  KEY `reportsTo` (`reportsTo`),
  KEY `officeCode` (`officeCode`),
  CONSTRAINT `employees_ibfk_1` FOREIGN KEY (`reportsTo`) REFERENCES `employees` (`employeeNumber`),
  CONSTRAINT `employees_ibfk_2` FOREIGN KEY (`officeCode`) REFERENCES `offices` (`officeCode`)
)
  

При загрузке приложения мы получаем сообщение об ошибке ниже

 referencedColumnNames(employeeNumber) of com.train.model.Employee.employee referencing com.train.model.Employee not mapped to a single property
  

когда я добавляю поле employeeNumber и генерирую геттеры и сеттеры, я получаю сообщение об ошибке ниже

 referencedColumnNames(officeCode) of com.train.model.Employee.office referencing com.train.model.Office not mapped to a single property
  

Сущность Office JPA

 @Entity
@Table(name="offices")
@NamedQuery(name="Office.findAll", query="SELECT o FROM Office o")
public class Office implements Serializable {
    private static final long serialVersionUID = 1L;

    private String addressLine1;

    private String addressLine2;

    private String city;

    private String country;

    private String phone;

    private String postalCode;

    private String state;

    private String territory;

    //bi-directional many-to-one association to Employee
    @OneToMany(mappedBy="office")
    private List<Employee> employees;

}

Table Description


CREATE TABLE `offices` (
  `officeCode` varchar(10) NOT NULL,
  `city` varchar(50) NOT NULL,
  `phone` varchar(50) NOT NULL,
  `addressLine1` varchar(50) NOT NULL,
  `addressLine2` varchar(50) DEFAULT NULL,
  `state` varchar(50) DEFAULT NULL,
  `country` varchar(50) NOT NULL,
  `postalCode` varchar(15) NOT NULL,
  `territory` varchar(10) NOT NULL,
  PRIMARY KEY (`officeCode`)
)
  

Почему объект employee жалуется на отсутствие officeCode и какая правильная сущность для Employee и Office

Комментарии:

1. Вам действительно нужно использовать сопоставления сущностей, я обнаружил, что ночью я сплю намного лучше, когда ссылаюсь на другие связанные сущности по id:Long

2. не могли бы вы привести пример