一点背景知识:
我在大公司的Spring启动应用程序上工作,我们无法控制数据库架构,表名和列名。因此,我们的表名和列名对他们没有明显的意义。
我们目前正在使用resources目录中的schema.sql和data.sql文件播种数据。这对我们的团队来说并没有起作用,因为他们努力使用这些模糊不清的表和列制作数据。我们经常最终通过我们的QA服务器查找帐户,然后针对QA数据库编写代码。
我的问题:
如何保留schema.sql和data.sql文件,但是我们的团队可以使用JPA或Spring Data JPA提供的播种机将数据播种到H2数据库。
我们的应用程序只提取数据,从不插入,所以我必须覆盖JpaRepository中的save函数才能完成此操作吗?或者我可以创建一个实体,并调用JpaRepository的保存功能吗?
以下是我们的帐户实体和存储库的模糊示例:
AccountEntity.java
@Data
@Entity
@Table(name = "Table_Name")
@SecondaryTables({
@SecondaryTable(name = "Table_Name2", pkJoinColumns = {
@PrimaryKeyJoinColumn(name = "ACCT_ID", referencedColumnName = "ACCT_ID") }),
@SecondaryTable(name = "Table_Name3", pkJoinColumns = {
@PrimaryKeyJoinColumn(name = "ACCT_ID", referencedColumnName = "ACCT_ID") }),
@SecondaryTable(name = "Table_Name4", pkJoinColumns = {
@PrimaryKeyJoinColumn(name = "ACCT_ID", referencedColumnName = "ACCT_ID") })
})
public class AccountEntity {
@Column(name = "ACCT_ID")
@Id
private Integer accountIdNumber;
@Column(name = "SOME_OTHER_COLUMN1")
private String someOtherColum1;
@Column(name = "SOME_OTHER_COLUMN2", table = "Table_Name3")
private String someOtherColum2;
@Column(name = "SOME_OTHER_COLUMN3", table = "Table_Name4")
private Integer someOtherColum3;
...
}
AccountRepository.java
@Repository
public interface AccountRepository extends JpaRepository<AccountEntity, Integer> {
public AccountEntity findByAccountIdNumber(Integer accountNumber);
public List<AccountEntity> findAllByProp1Prop2AndProp3(
String prop1, String prop2, String prop3);
}