小编Mad*_*Max的帖子

如何在 spring-data-jdbc 中指定表架构

在我的项目中,我使用 spring-data-jdbc 版本 2.0.4.RELEASE,但我遇到了如何为表指定架构的问题。实体类看起来像这样

@Data
@Table(value = "alpha.op_organization")
public class OrganizationEntity {
   @Id
   private Long id;
   @Column(name="name")
   private String name;
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用 jdbc 存储库方法保存实体,save如下所示

OrganizationEntity organization = new OrganizationEntity();
organization.setName("OrgName1");
organizationRepository.save(organisation)
Run Code Online (Sandbox Code Playgroud)

我遇到异常“关系 alpha.op_organization 不存在。相应的 sql 查询是

INSERT INTO "alpha.op_organization" ("name") VALUES (?)
Run Code Online (Sandbox Code Playgroud)

IE。事实证明,我们正在尝试在表“alpha.op_organization”中插入条目,而不是在模式 alpha 的表 op_organization 中插入条目。

我尝试自定义 NamingStrategy 以返回模式 alpha,但没有成功。

@Configuration
public class AppConfig extends AbstractJdbcConfiguration {
   @Bean
   public NamingStrategy namingStrategy() {
      return new NamingStrategy() {

         @Override
         public String getSchema() {
            return "alpha";
         }
      };
   }
} …
Run Code Online (Sandbox Code Playgroud)

spring-data-jdbc

6
推荐指数
1
解决办法
4573
查看次数

spring-data-jdbc deleteBy<field> 方法返回异常结果类型

我尝试声明并使用带有 spring-data-jdbc 存储库的 deleteBy 方法,如下所示

public interface TokenRepository extends CrudRepository<OpToken, Long> {
   void deleteByBreed(Long breed);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试调用方法时

private TokenRepository tokenRepository;
...
...
tokenRepository.deleteByBreed(123L);
Run Code Online (Sandbox Code Playgroud)

我得到异常:MethodNotFoundException:

java.lang.NoSuchMethodException: void.()

我决定,删除方法应该返回它处理的行数。所以,我像这样重写我的存储库界面

public interface TokenRepository extends CrudRepository<OpToken, Long> {
   long deleteByBreed(Long breed);
}
Run Code Online (Sandbox Code Playgroud)

但现在我遇到了另一个异常:org.springframework.jdbc.In CorrectResultSetColumnCountException:不正确的列计数:预期 1,实际 4

它看起来像方法返回实体或它尝试删除的实体列表。但我不需要它们。在我的情况下如何声明这个方法?

按实体看起来像这样:

@Data
public class OpToken implements Persistable<Long> {

  @Transient
  private boolean newEntity;

  @Id
  @Column("jti")
  private Long jti;

  @Column("breed")
  private Long breed;

  @Column("id_account")
  private Long idAccount;

  @Column("exp")
  private Date exp;

  @Override
  public Long getId() {
    return jti;
  } …
Run Code Online (Sandbox Code Playgroud)

java spring-data-jdbc

4
推荐指数
1
解决办法
1768
查看次数

标签 统计

spring-data-jdbc ×2

java ×1