JPA в платформе Play - многие ко многим с дополнительным столбцом - не сопоставлены с одним свойством

Я пытаюсь создать много-многократный корабль отношений с дополнительным столбцом, используя JPA в инфраструктуре воспроизведения (включена эволюция), и версия воспроизведения - 2.4.6 с использованием JavaJpa hibernate-entitymanager 5.0.5 final.

вот мой sql скрипт для создания всей таблицы:

CREATE TABLE IF NOT EXISTS `user_level` (
`level_id` bigint(20) NOT NULL AUTO_INCREMENT,
`level` int(3),
`level_name` varchar(255) NOT NULL,
 PRIMARY KEY (`level_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `menu` (
`menu_id` bigint(20) NOT NULL AUTO_INCREMENT,
`menu_name` varchar(255),
`parent` bigint(20),
 PRIMARY KEY (`menu_id`),
 CONSTRAINT `FK_PARENT_MENU` FOREIGN KEY (`parent`) REFERENCES `menu` (`menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `menu_level` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`level_id` bigint(20) NOT NULL,
`menu_id` bigint(20) NOT NULL,
`privilege` int(1) DEFAULT '0',
 PRIMARY KEY (`id`),
 CONSTRAINT `FK_MENU_LEVEL_USER_LEVEL_ID` FOREIGN KEY (`level_id`) REFERENCES `user_level` (`level_id`) ON UPDATE CASCADE,
 CONSTRAINT `FK_MENU_LEVEL_MENU_ID` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`menu_id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ниже мои классы сущностей

UserLevel.java

@Entity 
@Table(name = "user_level")
public class UserLevel {

  @Id
  @GeneratedValue(generator = "increment")
  @GenericGenerator(name = "increment", strategy = "increment")
  @Column(name = "level_id")
  private Long levelId;

  @Column(name = "level")
  private Integer level;

  @Column(name = "level_name")
  private String name;

  @OneToMany(fetch = FetchType.LAZY, mappedBy = "userLevel", cascade = CascadeType.ALL)
  private List<MenuLevel> menuLevels;
}

Menu.java

@Entity
@Table(name="menu")
public class Menu  {

  @Id
  @GeneratedValue(generator = "increment")
  @GenericGenerator(name = "increment", strategy = "increment")
  @Column(name = "menu_id")
  private Long menuId;

  @Column(name = "menu_name")
  private String name;

  @OneToMany(fetch = FetchType.LAZY, mappedBy = "menu", cascade = CascadeType.ALL)
  private List<MenuLevel> menuLevels;

/*parent child menu relations*/
  @OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
  private List<Menu> childMenu = new ArrayList<>();

  @JoinColumn(name="parent", referencedColumnName = "menu_id")
  @ManyToOne(fetch = FetchType.LAZY)
  private Menu parent;

}

MenuLevel.java

@Entity
@Table(name = "menu_level")
public class MenuLevel {

  @Id
  @GeneratedValue(generator = "increment")
  @GenericGenerator(name = "increment", strategy = "increment")
  public Long id;

  @JoinColumn(name = "level_id", referencedColumnName = "level_id")
  @ManyToOne(optional = false, fetch = FetchType.LAZY)
  private UserLevel userLevel;

  @JoinColumn(name = "menu_id", referencedColumnName = "menu_id")
  @ManyToOne(optional = false, fetch = FetchType.LAZY)
  private Menu menu;

  @Column(name = "privilege")
  private Integer privilege;
}

когда я бегу играть, говорят

Вызывается: org.hibernate.AnnotationException: referencedColumnNames(menu_id) of models.MenuLevel.menu ссылаясь на модели. Меню не сопоставлено ни одному свойству

в настоящее время я застрял с этой проблемой, очень рад, если кто-то может указать на мою ошибку, потому что я следовал некоторому учебнику и инструкции о JPA отношения многих ко многим, но все еще не могу понять, где я делаю неправильно.

0 ответов

Другие вопросы по тегам