Bonjour,

J'ai 3 classes : UsageRecord , RecordType et FilterUsageRecord.
- UsageRecord est l'entity correspondant à ma table UsageRecord;
- RecordType est l'entity renfermant les différents types d'événements ;
- FilterUsageRecord est la classe qui devrait être utilisée pour les requêtes à la table UsageRecord.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
@Entity()
public class UsageRecord implements Serializable {
 
    private long id;
    private Date startTime;
    private Date endTime;
    private int qoS;
    private String recordValue;
    private RecordType type;
    private MtUser user;
    private Collection<UserSession> sessions = new ArrayList<UserSession>();
    private Collection<MtApplication> applications = new ArrayList<MtApplication>();
    private Collection<MtChannel> channels = new ArrayList<MtChannel>();
 
 
    public UsageRecord() {
 
    }
 
    public UsageRecord(RecordType type,
              Date startTime
            , Date endTime
            , String recordValue
            , MtUser user
            , UserSession sessions
            , MtApplication applications
            , MtChannel channels
            , int qoS
            ) {
 
 }
 
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
  public long getId() {
    return this.id;
 }
   public void setId(Long id){
     this.id = id;
     setStartTime(new Date(id));
  //   setEndTime(new Date(id));
 
 }
 
   @OneToOne
   @JoinColumn(name ="id")
   public RecordType getRecordType(){return type;}
   public void setRecordType(RecordType type){this.type = type;}
 
   @Temporal(value = javax.persistence.TemporalType.TIMESTAMP)
   public Date getStartTime() {return startTime;}
   public void setStartTime(Date startTime) {this.startTime = startTime;}
 
    @Temporal(value = javax.persistence.TemporalType.TIMESTAMP)
    public Date getEndTime() {return endTime;}
    public void setEndTime(Date endTime) {this.endTime = endTime;}
 
    public int getQoS() {return qoS;}
    public void setQoS(int qoS) {this.qoS = qoS;}
 
    public String getRecordValue(){ return recordValue;}
    public void setRecordValue(String recordValue){this.recordValue = recordValue;}
 
    @OneToOne
    @JoinColumn(name ="id")
    public MtUser getUser(){
        return user;
 }
    public void setUser(MtUser user){
 
     this.user = user;
 
    }
 
 @OneToMany(mappedBy = "usageRecord",cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Collection<UserSession> getSessions(){
            return sessions;
  }
 
  public void setSessions(Collection<UserSession> sessions){
            this.sessions = sessions;
  }
 
 
  @OneToMany(mappedBy = "usageRecord",cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  private Collection<MtApplication> getApplications(){
           return applications;
 }
 
 public void setApplications(Collection<MtApplication> applications){
             this.applications = applications;
 
 }
 
@OneToMany(mappedBy = "usageRecord",cascade = CascadeType.ALL, fetch = FetchType.EAGER)
 public Collection<MtChannel> getChannels(){
   return channels;
 }
 
 public void setChannels(Collection<MtChannel> channels){
  this.channels = channels;
 }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Entity
public class RecordType  implements Serializable{
    @Id
    private long id;
    private String description;
    private EventType type;
    public enum EventType {
        ExceptionEvent,
        SessionEvent,
        ApplicationEvent,
        ChannelEvent,
        QoSEvent
        }
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public class FilterUsageRecord {
    private long id;
 
}
Comme ma classe FilterUsageRecord devrait être utilisée pour les requêtes sur la table UsageRecord (par exemple demander toutes les sessions d’un utilisateur), J’ai essayé d’y faire une requête mais j’ai eu l’erreur suivante :
Named queries can be defined only on an Entity or MappedSupperClass class.
Alors que dois-je faire pour que mes requêtes y soient acceptées ??

Merci d'avance