1

私はいくつかの NativeQueries を実行しようとしていますが、@SqlResultSetMapping 構成で行き詰まっています。

私はこれらのクラスを持っています:

@Entity  
public class LocalUser implements Serializable {  
    private static final long serialVersionUID = 1265845L;  
    @Id  
    private String username;  
    @Column(nullable=false)  
    private String password;  

    @OneToMany  
    private List<RoleName> roles;  

    public LocalUser() {  
    }  

    public LocalUser(String username, String password, List<RoleName> roles) {  
        this.username = username;  
        this.password = password;  
        this.roles = roles;  
    }      

    public String getPassword() {  
        return password;  
    }  

    public void setPassword(String password) {  
        this.password = password;  
    }  

    public List<RoleName> getRoles() {  
        return roles;  
    }  

    public void setRoles(List<RoleName> roles) {  
        this.roles = roles;  
    }  

    public String getUsername() {  
        return username;  
    }  

    public void setUsername(String username) {  
        this.username = username;  
    }  
}  

@Entity  
public class RoleName implements Serializable {  
    private static final long serialVersionUID = 12598741564894L;  
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    private Long id;  

    private String roleName;  

    public RoleName() {  
    }  

    public RoleName(Long id, String roleName) {  
        this.id = id;  
        this.roleName = roleName;  
    }  

    public RoleName(String roleName) {  
        this.roleName = roleName;  
    }  

    public Long getId() {  
        return id;  
    }  

    public void setId(Long id) {  
        this.id = id;  
    }  

    public String getRoleName() {  
        return roleName;  
    }  

    public void setRoleName(String roleName) {  
        this.roleName = roleName;  
    }  
}

私の質問は、クラス LocalUser のプロッパー @SqlResultSetMapping を記述する方法です。私のテストSQLステートメントは次のとおりです。

select 'user' as username, 'passwd' as password, 1 as id, 'admin' as roleName;  

そして、ユーザー名 user、パスワード passwd、および ID 1 の admin であるロールのリストを持つ 1 つのエンティティ ローカル ユーザーを取得したいと思います。

私はこれまでのところ次のように考えました:

@SqlResultSetMapping(name="LocalUserMapping",  
    entities={  
        @EntityResult(entityClass=LocalUser.class,fields={  
            @FieldResult(name="username",column="username"),  
            @FieldResult(name="password",column="password")  
        }),  
        @EntityResult(entityClass=RoleName.class,fields={  
            @FieldResult(name="id",column="id"),  
            @FieldResult(name="roleName",column="roleName")  
        })  
    })

しかし、1 つではなく 2 つのオブジェクトが表示されます。誰でも私を助けてもらえますか?ありがとう。

4

1 に答える 1

0

2つのオブジェクトは、entityClass=注釈を使用した結果です(2x、1つはLocalUser用、もう1つはRoleName用)。それらを1つのentityClass定義に結合すると、1つのオブジェクトが返されます。

于 2013-03-13T16:22:23.540 に答える