私はいくつかの 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 つのオブジェクトが表示されます。誰でも私を助けてもらえますか?ありがとう。