Witam,

Mam problem ze stworzeniem mappingu JPA do wywoływanego zapytania SQL.
Używam Hibernate 3.2.6ga.
Mając klasę:

@Entity(name="test.entity.Student")
@Table(name="`Students`")
@NamedNativeQueries({
   @NamedNativeQuery(
           name = "getStudentList",
           query = "SELECT " +
           "st.\"StudentId\" as StudentId," +
           "st.\"Name\" as Name," +
           "st.\"Surname\" as Surname," +
           "st.\"AddressId\" as AddressId" +
           "FROM " +
           "\"getStudentList\"(?) AS st " +
           "ORDER BY " +
           st."\"Surname\" ASC",
           resultSetMapping = "Student"
   )
})
@SqlResultSetMappings({
   @SqlResultSetMapping(name="Student", entities={
       @EntityResult(entityClass = Student.class, fields = {
           @FieldResult(name="StudentId", column = "StudentId"),
           @FieldResult(name="Name", column = "Name"),
           @FieldResult(name="Surname", column = "Surname"),
           @FieldResult(name="AddressId", column = "AddressId")
       })
   }
)})
public class Student implements Serializable {
   private static final long serialVersionUID = 2398501228962124869L;

   @Id
   @Column(name="`Student`")
   private Integer Student;

   @Column(name="`ClientId`")
   private Integer ClientId;

   @Column(name="`Name`")
   private String Name;
   
   @Column(name="`Surname`")
   private String Surname;

   @Column(name="`AddressId`")
   private Integer AddressId;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "`AddressId`", updatable = false, insertable = false)
   private Address Address;

    public Integer getStudent() {
        return Student;
    }
    
    public void setStudent(Integer student) {
        Student = student;
    }
    
    public Integer getClientId() {
        return ClientId;
    }
    
    public void setClientId(Integer clientId) {
        ClientId = clientId;
    }
    
    public String getName() {
        return Name;
    }
    
    public void setName(String name) {
        Name = name;
    }
    
    public String getSurname() {
        return Surname;
    }
    
    public void setSurname(String surname) {
        Surname = surname;
    }
    
    public Integer getAddressId() {
        return AddressId;
    }
    
    public void setAddressId(Integer addressId) {
        AddressId = addressId;
    }
    
    public Address getAddress() {
        return Address;
    }
    
    public void setAddress(Address address) {
        Address = address;
    }
}

Przy wywoływaniu query rzucany jest wyjątek, że nie ma kolumny AddressId3_16_0.
Jeżeli w mappingu i zapytaniu dam nazwę kolumny 'AddressId3_16_0' jest ok, ale jest to nazwa kolumny tworzona przez Hibernate - więc nie jest stała. Działa również, jeżeli usunę joina dla pola Address, więc podejrzewam, że ma to z tym związek.

Być może w kodzie są drobne błędy ponieważ całość uprościłem trochę na potrzeby forum.

Pozdrawiam.