使用自定义查询映射实体的字段

时间:2016-05-10 14:29:44

标签: java hibernate jpa

我尝试使用两个或更多表中的字段创建一个实体。 我想用自定义Query创建字段

@Entity
@Table(name = "Card")
@SecondaryTable(name = "Account", pkJoinColumns = @PrimaryKeyJoinColumn(name = "AccountId", referencedColumnName = "CardId"))
public class Card {

   @Id
   @Column(name = "CardId", nullable = false)
   private String CardId;

  @Column(name = "N67ACCN", table = "Account")
  private long numOfAccount;
}

对于一个键CardId,我有许多行具有相同的AccountId和其他列 例如,

CardId AccountId AccountPIN

1 1 1

1 1 2

1 1 3

我想要像

这样的东西
@Query (value = "SELECT N67ACCN FROM Account WHERE CardId = AccountId and AccountPin = 1")
private long numOfAccount;

}

有可能吗?

2 个答案:

答案 0 :(得分:0)

您需要Hibernate @Formula

@Formula ("SELECT N67ACCN FROM Account WHERE CardId = AccountId and AccountPin = 1")
private long numOfAccount;

但如果您期望SELECT COUNT值,我认为您需要long

答案 1 :(得分:0)

谢谢。

你错过了()

@Formula("(SELECT DISTINCT n.N67ACCN FROM N67 n WHERE n.N67MBID = B31AGID AND n.N67ACGN = 1)")
private String numOfAccount;

并仅使用列的名称(不是字段\属性)