I have a SQL query like this:
"Select UIProfileID from UserTable where UPPER(UserID) = UPPER('?1')".
I want to convert it to Spring JPA.
I want to write getUIProfileId() and return Integer. But I don't know how to implement. Because User table doesn't have UIProfileId column that it was joined from UIProfileTable table. Please help me solve it.
Currently, I have tables:
User.java
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "UserTable")
public class User {
@Column(name = "UserID", length = 32, nullable = false)
@Id
private String name;
@ManyToOne
@JoinColumn(name = "DomainID", nullable = false)
private Domain domain;
@Column(name = "Password", length = 32, nullable = false)
private String password;
@ManyToOne
@JoinColumn(name = "UIProfileID", nullable = false)
private UIProfile uiProfile;
@Column(name = "ResPerpage", nullable = false)
private Integer resperpage;
@Column(name = "DefaultTab")
private Integer defaulttab;
@ManyToOne
@JoinColumn(name = "AdminProfile")
private AdminProfiles adminProfile;
@Column(name = "LanguageId")
private Integer languageId;
}
UIProfile.java
@Entity
@Getter
@Setter
@Table(name = "UIProfileTable")
public class UIProfile implements Serializable {
@Id
@Column(name = "UIProfileID", length = 11, nullable = false)
private Integer id;
@Column(name = "UIProfileName", length = 32, nullable = false)
private String name;
@OneToMany(mappedBy = "id.uiProfile")
private List<UIProfileTopLevel> topLevels;
}
UserRepository.java
public interface UserRepository extends Repository<User, String> {
Optional<User> findOne(String name);
@Query("Select UIProfileID from User where UPPER(UserID) = UPPER('admin')")
Integer getUIProfileId();
}