JPA Le champ d'état du chemin d'accès ne peut pas être résolu à un type valide

J'ai besoin d'aide pour le dépannage d'une relation /requête avec EclipseLink 2.5.x fournisseur.

De la relation de ThreePhaseMotorInput à ValidationMessage est censé être un uni-directionnelle OneToMany, c'est à dire chaque moteur peut avoir 0..n messages et en Java objet graphique ValidationMessage n'a pas de référence à ThreePhaseMotorInput.

J'obtiens une erreur que JPA ne pouvez pas trouver les attributs qui font partie de la ValidationMessage classe lors d'un accès via ThreePhaseMotor. (Voir le texte de l'erreur ci-dessous)

Merci de penser à ma question!

Requête

select msg.validationMsg, COUNT(m.id) from ThreePhaseMotorInput AS m JOIN m.valMessages AS msg GROUP BY msg.validationMsg

Erreur

 org.eclipse.persistence.exceptions.JPQLException: 
Exception Description: Problem compiling [select msg.validationMsg, COUNT(m.id) from ThreePhaseMotorInput AS m JOIN m.valMessages AS msg GROUP BY msg.validationMsg]. 
[7, 24] The state field path 'msg.validationMsg' cannot be resolved to a valid type.
[71, 84] The collection-valued path 'm.valMessages' cannot be resolved to a valid association field.
[119, 136] The state field path 'msg.validationMsg' cannot be resolved to a valid type.

ThreePhaseMotorInput classe

@Entity
@Table(name = "three_phase_motor_input")
public class ThreePhaseMotorInput implements IThreePhaseMotorInput, Serializable {
    private static final long serialVersionUID = 8084370807289186987L;
    @Transient
    private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Version
    private Integer version;
    private Integer status;
    @Transient
    private Integer numMessages;

    @OneToOne(cascade = CascadeType.ALL, optional = true, targetEntity = UnapprovedThreePhaseMotor.class)
    @JoinColumn(name = "unapproved_id")
    private IThreePhaseMotor unapprovedMotor;

    @OneToOne(cascade = CascadeType.ALL, optional = true, targetEntity = ApprovedThreePhaseMotor.class)
    @JoinColumn(name = "approved_id")
    private IThreePhaseMotor approvedMotor;

    @OneToMany(orphanRemoval = true, cascade = CascadeType  .ALL, fetch = FetchType.LAZY, targetEntity = ValidationMessage.class)
    @JoinColumn(name = "input_id", referencedColumnName = "id", nullable = false)
    @OrderColumn(name = "idx")
    private List<IValidationMessage> valMessages;

ValidationMessage classe

@Entity
@Table(name = "validation_message")
public class ValidationMessage implements Serializable, IValidationMessage {
    private static final long serialVersionUID = 8765213112015434057L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "record_id")
    private Long recordId;
    @Column(name = "field_name")
    private String fieldName;
    @Column(name = "validation_msg")
    private String validationMsg;
    private Integer status;
    @Column(name = "fail_field")
    private String failField;
    @Column(name = "error_source")
    private Integer errorSource;
Vous avez un problème dans une requête, probablement une requête nommée. Pourriez-vous nous montrer la requête avec le problème (c'est celui-ci: [select m.approvedMotor, m.valMessages, m.valMessages.validationMsg...)? C'est qu'une requête nommée ou une requête native?
J'ai divisé la requête dans le message. C'est une requête nommée.
J'ai mis à jour la question à la révision de la requête par votre réponse ci-dessous et les messages d'erreur. Il n'arrive pas à obtenir de la ValidationMessage classe par m.valMessages.
OK. Eu corrigée et marqué votre réponse acceptée. MERCI!!
J'ai marqué Andrei réponse comme accepté, upvoted à la fois et d'attribution de la prime à 22 heures quand DONC me permet de le faire.

OriginalL'auteur Timothy Vogel | 2015-02-14