休眠ManyToMany选择

时间:2019-04-17 19:25:32

标签: mysql hibernate jpa spring-data-jpa

上下文:我有两个表Secret_Agent和Secret_Mission。两者之间具有@ManyToMany关系,因为可以给许多秘密特工执行相同的秘密任务,并且可以给同一个秘密特工执行许多秘密任务。

  

表SECRET_AGENT

     

列SecretAgentId,SecrentAgentName

     

表SECRET_MISSION

     

SecretMissionId,SecrentMissionName,SecretMissionStatus列

     

加入表格

     

SECRET_AGENT_MISSION

     

列:SecretAgentId,SecretMissionId

Java代码:

  

Secret_Agent类{。 。

     

@ManyToMany(级联= CascadeType.ALL)@JoinTable(名称=   “ SECRET_AGENT_MISSION”,joinColumns = {@ @JoinColumn(name =   “ SecretAgentId”)},inverseJoinColumns = {@JoinColumn(name =   “ SecretMissionId”)}私人名单任务; 。 。 。 }

     

Secret_Mission类{。 。

     

@ManyToMany(mappedBy =“ missions”)私有列表代理;   。 。 。 }

问题:我正在尝试获取状态为=有效的所有特工和特工任务。但是下面的查询仅向我查询任务状态为“有效”的特工。

data = ogl.find_all('p', class_ ="list__item__details__icons__element__desc")
for idx,entry in enumerate(data):
    if idx == 0:
        print('powierzchnia {}'.format(entry.text))
    elif idx == 1:
        print('liczba_pokoi {}'.format(entry.text))
    else:
        print('pietro {}'.format(entry.text))

任务状态可以为存档或活动。 我只需要任务状态为ACTIVE的所有秘密特工或任务为空的秘密特工实体

1 个答案:

答案 0 :(得分:0)

可以通过以下方式用@Where注释两次映射关联来解决此问题。

@ManyToMany(mappedBy = "agents") 
@Where(clause = "status = 'ACTIVE'")
private List activeMissions

@ManyToMany(mappedBy = "agents")
private List missions

完整的解释可以在这里https://thoughts-on-java.org/hibernate-tips-filter-entities-mapped-association/