Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOOQ+JPA实体_Java_Spring Boot_Spring Data Jpa_Jooq - Fatal编程技术网

Java JOOQ+JPA实体

Java JOOQ+JPA实体,java,spring-boot,spring-data-jpa,jooq,Java,Spring Boot,Spring Data Jpa,Jooq,我是JOOQ图书馆的新手,有一件事让我非常感兴趣。我一开始在JOOQ上实现了CRUD服务,之后我试图避免一些重复的代码。为了达到这个目标,我添加了JPA存储库,并且added@EntityJOOQ类生成的对my的注释。现在,我仍然希望在某些情况下使用JOOQ,使用过滤器、排序和分页来查询列表。但出现了一些问题,现在在JOOQ发出select请求之后,我可以在类的属性中看到null 我通过过滤器获得了正确的实体数,但映射后类的属性为null。这个映射是错误的还是我不能在这个案例中同时使用JOOQ和

我是JOOQ图书馆的新手,有一件事让我非常感兴趣。我一开始在JOOQ上实现了CRUD服务,之后我试图避免一些重复的代码。为了达到这个目标,我添加了JPA存储库,并且added@EntityJOOQ类生成的对my的注释。现在,我仍然希望在某些情况下使用JOOQ,使用过滤器、排序和分页来查询列表。但出现了一些问题,现在在JOOQ发出select请求之后,我可以在类的属性中看到null

我通过过滤器获得了正确的实体数,但映射后类的属性为null。这个映射是错误的还是我不能在这个案例中同时使用JOOQ和JPA

我的Abstract类适用于所有实体,正如我所说,为了避免重复代码,我重构了一些代码,现在使用泛型:

@MappedSuperclass
public abstract class AbstractServiceEntity {

private Integer id;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}
}
JOOQ生成的我的JPA类:

/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
@Entity
@Table(schema = "ref", name = "account")
public class Account extends AbstractServiceEntity implements Serializable {

   private static final long serialVersionUID = -162537472;

private Integer       id;
private Integer       transitId;
private Integer       partnerId;
private String        currencyCode;
private String        descr;
private Long          inCredit;
private Long          balanceLimit;
private Long          outCredit;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private Integer       transitPartnerId;

public Account() {}

public Account(Account value) {
    this.id = value.id;
    this.transitId = value.transitId;
    this.partnerId = value.partnerId;
    this.currencyCode = value.currencyCode;
    this.descr = value.descr;
    this.inCredit = value.inCredit;
    this.balanceLimit = value.balanceLimit;
    this.outCredit = value.outCredit;
    this.createdAt = value.createdAt;
    this.updatedAt = value.updatedAt;
    this.transitPartnerId = value.transitPartnerId;
}

public Account(
    Integer       id,
    Integer       transitId,
    Integer       partnerId,
    String        currencyCode,
    String        descr,
    Long          inCredit,
    Long          balanceLimit,
    Long          outCredit,
    LocalDateTime createdAt,
    LocalDateTime updatedAt,
    Integer       transitPartnerId
) {
    this.id = id;
    this.transitId = transitId;
    this.partnerId = partnerId;
    this.currencyCode = currencyCode;
    this.descr = descr;
    this.inCredit = inCredit;
    this.balanceLimit = balanceLimit;
    this.outCredit = outCredit;
    this.createdAt = createdAt;
    this.updatedAt = updatedAt;
    this.transitPartnerId = transitPartnerId;
}
以及我从数据库中提取实体的方法:

@Repository
@RequiredArgsConstructor
public class JooqAccountRepository {

private final DSLContext jooq;

public List<Account> findAll(Condition filterCondition, SortField[] sortFields, Integer partnerId, Integer limit, Integer offset) {
    return jooq.selectFrom(ACCOUNT)
            .where(ACCOUNT.PARTNER_ID.equal(partnerId))
            .and(filterCondition)
            .orderBy(sortFields)
            .limit(limit)
            .offset(offset)
            .fetchInto(Account.class);
}

public Integer findAccountsCount(Integer partnerId) {
    return jooq.selectCount().from(ACCOUNT)
            .where(ACCOUNT.PARTNER_ID.equal(partnerId))
            .fetchOne(0, Integer.class);
}

}

由于我的搜索,我在Account类中的注释上犯了一个错误。若你们想同时使用这些框架,你们应该在实体的属性上使用@Column或者以不同的方式设置你们的jooq的codegen插件

您不应该混合使用JOOQ和Spring数据。如果添加Spring数据以使用分页,则是在混合使用两种工具。您应该通过JOOQ使用分页,或者通过Spring数据使用分页。您可以检查规范对象、可分页等@FedericoPiazza ye我以前使用过Jpa的规范和可分页。但现在我正试图找出问题所在:您可能遇到了以下问题:。至少在jooq3.13之前,JPA@Column注释在jOOQ的实体上是强制性的,即使它不在JPA中。“显然是个错误。”卢卡塞德谢谢你的回答!我现在明白了!