有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在hibernate jpa中通过两个辅助表连接两个实体?

我需要你的帮助

我有表格动作和表格列表的实体。我想在table_action实体中有一个table_列表元素的列表。我无法更改数据库模型,必须使用hibernatedb_model 您可以在下面的屏幕截图上看到连接

我现在拥有的东西不起作用:

     TableAction.java :

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "table_action2list", joinColumns = {
        @JoinColumn(name = "OBJID") }, inverseJoinColumns = {
                @JoinColumn(name = "list_objid", referencedColumnName = "objid", nullable = false, insertable = false, updatable = false),
                @JoinColumn(name = "list_type", referencedColumnName = "list_type", nullable = false, insertable = false, updatable = false),
                @JoinColumn(name = "list_kind", referencedColumnName = "list_kind", nullable = false, insertable = false, updatable = false) })
private Set<TableList> tableList = new HashSet<TableList>();

我不知道如何加入table_action2plan

这就是有效的sql

    select rl.* from table_list rljoin table_action2list arc on arc.LIST_OBJID = rl.OBJID and arc.LIST_KIND = rl.LIST_KIND and arc.LIST_TYPE = rl.LIST_TYPE join table_action2plan ac on ac.OBJID = arc.action2plan_objid join table_action ta on ta.OBJID = ac.ACTION_OBJID ;

共 (1) 个答案

  1. # 1 楼答案

    经过一些研究,我发现我不能在table_action实体中有table_list的列表,因为TableAction中没有这样的关系。通过改变数据库结构,使实体之间只有一个连接表,解决了这个问题。然后,它像往常一样使用JoinTable注释