【发布时间】:2021-09-07 17:00:06
【问题描述】:
我想通过 spring data jpa 中的查询方法从子类中获取数据。不想使用 jpql 或标准 api。我想获取具有指定帐户类型和用户的所有连接。我知道 jpql 以及标准 api 会完成这项工作,但我想用 JPA 查询方法来实现这一点。以下是我的实体代码和存储库。
这是主要的实体类
@Entity
public class Connection {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(
name = "UUID",
strategy = "org.hibernate.id.UUIDGenerator"
)
@Column(name = "Connection_Id", nullable = false, updatable = false)
private String id;
@Column(name = "User_Id", nullable = false)
private String userId;
@Column(name = "Name", nullable = false, length = 64)
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "Connection_Type_Id")
private ConnectionType connectionType;
// default constructor
// getter and setter
}
这是抽象和具体的实体类
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class ConnectionType {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(
name = "UUID",
strategy = "org.hibernate.id.UUIDGenerator"
)
@Column(name = "Id", nullable = false)
private String id;
@OneToOne(mappedBy = "connectionType")
private Connection connection;
// default constructor
// getter setter
}
@Entity
public class EmailAccount extends ConnectionType {
@Column(name = "Username", nullable = false)
private String username;
@Column(name = "Password", nullable = false)
private String password;
@Column(name = "Account_Type", nullable = false)
@Enumerated(value = EnumType.STRING)
private AccountType accountType;
@Column(name = "FullName")
private String fullName;
// default constructor
// getter setter
}
@Entity
public class OtehrAccount extends ConnectionType {
@Column(name = "Client_Id", nullable = false)
private String clientId;
@Column(name = "Client_Secret", nullable = false)
private String secret;
// default constructor
// getter and setter
}
下面是仓库
public interface ConnectionRepository extends JpaRepository<Connection, String> {
// Query Method that i want to write but is not valid.
List<Connection> findByUserIdAndconnectionTypeAccountType(String userId, AccountType accountType);
}
repo 中的 findByUserIdAndconnectionTypeAccountType 方法不正确,所以我只想知道天气是否可以编写基于子类属性得到结果的方法?
【问题讨论】:
标签: java spring hibernate jpa spring-data-jpa