【发布时间】:2021-04-06 07:28:30
【问题描述】:
如何查询计费方案实体,例如按时间返回计费?
这是我的两个实体类。
*编辑 添加了我的测试代码,两种解决方案都为我返回 null 我做错了吗?不过我觉得我越来越近了!
@Entity
public class Charge {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
private LocalTime time;
private double rate;
@ManyToOne
@JoinColumn(name="cs_id", nullable=false)
private ChargeScheme chargeScheme;
}
@Entity
public class ChargeScheme implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="cs_id")
private Long id;
@OneToMany(mappedBy="chargeScheme")
private Set<Charge> charges;
}
Set<Charge> charges = new HashSet<>();
try (BufferedReader br = new BufferedReader(new FileReader("FILE"))) {
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(COMMA_DELIMITER);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse(values[0], formatter);
double rate = Double.parseDouble(values[1]);
Charge charge = new Charge(chargeScheme);
charge.setTime(time);
charge.setRate(rate);
charges.add(charge);
}
//set charges
LocalTime time = LocalTime.of(4,0,0);
chargeScheme.setChargeScheme(charges);
chargeSchemeRepository.save(chargeScheme);
Optional<Charge> opt = chargeSchemeRepository.findAllByCharges_TimeGreaterThan(time);
Optional<ChargeScheme> opt2 = chargeSchemeRepository.findByChargesTimeGreaterThan(time);
List<ChargeScheme> chargescheme = chargeSchemeRepository.findAll();
ChargeScheme scheme = chargescheme.get(0);
Set<Charge> cur_charges = scheme.getChargeScheme();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
【问题讨论】:
-
您的代码缺少级联,没有任何费用保存在此行
chargeSchemeRepository.save(chargeScheme);上。请参阅我的级联代码。
标签: spring spring-boot jpa h2