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 отношения многих ко многим, но все еще не могу понять, где я делаю неправильно.