2017-11-14 1 views
1

ich eine Benachrichtigung service.Notification Show für Nutzer mit ihrer permission.Notification hängt habe mit Hilfe von drei Tabellen implemeted ist sie Mitteilung ist, Meldungsart (seinen Benachrichtigungstyp definieren und seine belogs auf die Berechtigungsbenutzer definiert) und Berechtigungstabelle (ID und Berechtigungsname) Benachrichtigungs- und Benachrichtigungstabellen werden unten hinzugefügt.Wie diese Einheit Abfrage mit dem Namen erstellen

Benachrichtigung

public class Notifications { 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private Long id; 
private String title; 
private String deatils; 
private String link; 
@OneToOne(fetch=FetchType.EAGER) 
@PrimaryKeyJoinColumn(name="NotificationTypeId",referencedColumnName="Id") 
private NotificationTypes notificationTypes; 
private Boolean tenantSpecific; 
private Boolean userSpecific; 
private Long recieverUserId; 
private Boolean activeFlag; 
private Long tenantId; 
@Temporal(TemporalType.TIMESTAMP) 
private Date insertedDttm; 
private Long insertedBy; 
@Temporal(TemporalType.TIMESTAMP) 
private Date updatedDttm; 
private Long updatedBy; 
} 

NotifiactionType Entity

public class NotificationTypes implements Serializable { 
private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private Long id; 

private String typeName; 
@Temporal(TemporalType.TIMESTAMP) 
private Date insertedDttm; 
private Long insertedBy; 
@Temporal(TemporalType.TIMESTAMP) 
private Date updatedDttm; 
private Long updatedBy; 

@OneToMany(fetch = FetchType.EAGER) 
private List<RLPermissions> permissions; 

} 

in über zwei enties i Liste der Benachrichtigung durch bestimmte Berechtigungen finden wollen so dass Select nt from notification nt where nt.notificationType.permission in(permissionList) Wie kann ich diese Abfragen in dem Namen lösen.

Antwort

1

Versuchen Sie, die ID von Permission zu bekommen verbindet und anschließend in der Liste der IDs übergeben:

Select nt 
from notification n 
    inner join n.notificationType nt 
    inner join nt.permissions p 
where p.id in :permissionIds 

im Transaktionsmethode:

session.createNamedQuery("query", Notifications.class) 
      .setParameterList("permissionIds", permissionIds) 
      .list(); 
+0

@marciej für die nicht auf Bedingung Abfrage? – Araf

+0

Nein, das brauchst du nicht in jpql/hql –

Verwandte Themen