我有一个名为“货币”的MySQL数据库,其中包含一百多个表,每个表用于一种货币,并且都具有相同的结构(2列,时间戳的日期时间和速率的浮点数)。
Spring Boot 应用程序如何与此结构交互?
我只想有一个带有字段和 getter/setter 方法的类 CurrencyRate。如果我标记这个类 ,那么我只能访问一个表。我已经研究了该标记,但它似乎仅适用于我们希望同时与多个表进行交互的情况,而不仅仅是一个表。@Entity@Table@SecondaryTable
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Id;
import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
import com.fasterxml.jackson.databind.ser.std.NumberSerializers.FloatSerializer;
public abstract class CurrencyRate implements Serializable {
@Id
@JsonSerialize(using=DateSerializer.class)
private Date datetime;
@NotBlank
@JsonSerialize(using=FloatSerializer.class)
private float rate;
Date getDate () { return this.datetime; }
void setDate (Date timestamp) { this.datetime = timestamp; }
float getRate () { return this.rate; }
void setRate (float rate) { this.rate = rate; }
}
我的想法是,我可以将CurrencyRate作为一个抽象类(如提供的图像所示),然后为从该类继承的每种货币创建一个类。这将是非常乏味的,但至少它可能会起作用。但是,似乎我不仅要为每个货币模型创建一个类,还要为每个存储库创建一个类。
除非有办法在不做所有这些事情的情况下为这个结构服务?有什么想法吗?目前正在查看文档并搜索具有此问题的其他文档,但这种结构似乎并不常见。
编辑:
我想添加控制器,因为我相信它是区分抽象类的子类的逻辑问题发生的位置。
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/rates")
class CurrencyRateController {
@Autowired
private CurrencyRateService service;
@GetMapping("/allEUR")
public List<CurrencyRate> getAllEUR() {
return service.findAll();
}
@GetMapping("/allCAD")
public List<CurrencyRate> getAllCAD() {
return service.findAll();
}
}
上面的控制器返回 /allCAD 和 /allEUR 的 CAD 值,我假设这是因为 CurrencyRateService 使用 CurrencyRateRepository。在某个地方,Hibernate试图区分EUR子类和CAD子类,但它们是相同的。因此,为所有请求提供 CAD 值。
慕村225694
慕标5832272
四季花海
随时随地看视频慕课网APP
相关分类