Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可嵌入密钥上的一元映射_Java_Jpa_Jpql - Fatal编程技术网

Java 可嵌入密钥上的一元映射

Java 可嵌入密钥上的一元映射,java,jpa,jpql,Java,Jpa,Jpql,我正在尝试为用户(存储在表用户中)访问项目(存储在表选项卡中)建立权限规则。是否查看某些内容的可用性存储在权限选项卡中 结果应与语句运行时一样(对于id=2的用户): 我试图通过@OneToMany注释执行此操作,但失败-我收到消息: 部署失败。消息是:异常描述:异常 @从 实体类[类] com.jtsmr.scheduler.persistence.entities.UsersEntity]不完整。 当源实体类使用复合主键时 @必须使用 @连接列。name和referencedColumnNa

我正在尝试为用户(存储在表
用户
中)访问项目(存储在表
选项卡
中)建立权限规则。是否查看某些内容的可用性存储在
权限选项卡中

结果应与语句运行时一样(对于id=2的用户):

我试图通过
@OneToMany
注释执行此操作,但失败-我收到消息:

部署失败。消息是:异常描述:异常 @从 实体类[类] com.jtsmr.scheduler.persistence.entities.UsersEntity]不完整。 当源实体类使用复合主键时 @必须使用 @连接列。name和referencedColumnName元素都必须 在每一列中指定

在修改数据库和添加
权限选项卡
之前,一切都正常。当我添加它时,我无法编写正确的
@OneToMany
注释,也无法成功地找到我的案例手册

如果不可能,通过JPQL的解决方案就足够了(我无法构造连接操作)

以下是我的设置:

DB(易于理解的创建语句):

JPA映射如下(省略函数):
选项卡:

用户:

@Entity
@Table(name = "users")
public class UsersEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private Long userId;
    @Column(name = "username")
    private String username;
    @Column(name = "password")
    private String password;
    @Column(name = "name")
    private String name;
    @Column(name = "email")
    private String email;
    @OneToMany
    @JoinTable(
        name = "permissions_tabs",
        joinColumns
        = {
            @JoinColumn(name = "user_id", referencedColumnName = "user_id")},
        inverseJoinColumns
        = {
            @JoinColumn(name = "tab_id", referencedColumnName = "tab_id")})
    private List<PermissionsTabsEntity> allowedTabs;
}
以及许可证:

@Entity
@Table(name = "permissions_tabs")
public class PermissionsTabsEntity implements Serializable {
    @EmbeddedId
    private PermissionsTabsPK id;
    @Column(name = "to_view")
    private boolean toView;
    @Column(name = "to_edit")
    private boolean toEdit;
}
提前谢谢你

@Entity
@Table(name = "tab")
public class TabEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "tab_id", insertable = false, updatable = false)
    private Long tabId;
    @Column(name = "parent", insertable = false, updatable = false)
    private Long parent;
    @Column(name = "name", insertable = false, updatable = false)
    private String name;
}
@Entity
@Table(name = "users")
public class UsersEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private Long userId;
    @Column(name = "username")
    private String username;
    @Column(name = "password")
    private String password;
    @Column(name = "name")
    private String name;
    @Column(name = "email")
    private String email;
    @OneToMany
    @JoinTable(
        name = "permissions_tabs",
        joinColumns
        = {
            @JoinColumn(name = "user_id", referencedColumnName = "user_id")},
        inverseJoinColumns
        = {
            @JoinColumn(name = "tab_id", referencedColumnName = "tab_id")})
    private List<PermissionsTabsEntity> allowedTabs;
}
@Embeddable
public class PermissionsTabsPK implements Serializable {
    @Column(name = "user_id")
    private Long userId;
    @Column(name = "tab_id")
    private Long tabId;
}
@Entity
@Table(name = "permissions_tabs")
public class PermissionsTabsEntity implements Serializable {
    @EmbeddedId
    private PermissionsTabsPK id;
    @Column(name = "to_view")
    private boolean toView;
    @Column(name = "to_edit")
    private boolean toEdit;
}