问题 jpa中@formula的替代品


在休眠中使用的@formula有没有替代解决方案?我需要jpa使用它,例如:

@Formula("select count(1) from Market m where m.defaultAirportCode=airportCode")
private Boolean isDefault;

6159
2018-06-26 11:14


起源



答案:


您可以使用注释和一种方法的组合

@Transient
private Boolean isDefault;

@PostLoad
private void setDefault() {
this.isDefault=this.defaultAirportCode.equals(this.airportCode);
}

8
2017-09-05 19:21



这种方法的缺点是你不能在JPQL中使用瞬态字段。看到这个问题: stackoverflow.com/questions/13154535/... - Jefferson Lima
这不是缺点,这是怎么回事 @Transient 工作,但我会问你一个问题{是 @Formula 使用JPQL?} - Bassem Reda Zohdy


答案:


您可以使用注释和一种方法的组合

@Transient
private Boolean isDefault;

@PostLoad
private void setDefault() {
this.isDefault=this.defaultAirportCode.equals(this.airportCode);
}

8
2017-09-05 19:21



这种方法的缺点是你不能在JPQL中使用瞬态字段。看到这个问题: stackoverflow.com/questions/13154535/... - Jefferson Lima
这不是缺点,这是怎么回事 @Transient 工作,但我会问你一个问题{是 @Formula 使用JPQL?} - Bassem Reda Zohdy


您可以使用包含公式的数据库视图,并将实体映射到视图。


5
2017-07-09 13:20





不,@ formula注释没有纯粹的JPA替代品。


3
2017-07-09 09:04