gpt4 book ai didi

java - Hibernate 坚持零而不是双值

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:04 24 4
gpt4 key购买 nike

我使用 Spring Boot 1.3.7.RELEASE 作为应用程序框架,Hibernate 作为 JPA 实现,Spring Data 作为数据访问接口(interface),MySQL 5.7.15 作为存储服务器。我有两个模型:AgencyServiceAreaCoverageAgency 目前具有 oneToOne 单向服务和 ServiceAreaCoverage。这是我的应用程序模型和映射。

@Entity
@Table(name = "agencies")
public class Agency {

@Id
private String id;
private String name;
private long phoneNumber;
private String email;
private String websiteUrl;
private boolean active;

@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "service_area_coverage_id")
private ServiceAreaCoverage serviceAreaCoverage;
}


@Entity
@Table(name = "service_area_coverages")
public class ServiceAreaCoverage {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private double latitude;
private double longitude;
private double latitudeSpan;
private double longitudeSpan;
}

我正在尝试使用 Spring Data JpaRepository 的 save 方法通过 ServiceAreaCoverage 保存 AgencyAgencyServiceAreaCoverage 都得到保存,关键约束也得到正确管理。但是,double 值不会被保存。保存的不是双值,而是零。我想不出发生这种结果的任何原因,也想不出解决问题的想法。因此,任何帮助将不胜感激。这是我与此事相关的一些其他代码和引用资料。

服务代码:

@Service
public class AgencyServiceImpl implements AgencyService {

@Autowired
private AgencyRepository agencyRepository;

@Override
public void createAgency(Agency agency) {

this.agencyRepository.save(agency);
}
}

存储库接口(interface)代码:

@Repository
public interface AgencyRepository extends JpaRepository<Agency, String> {

}

生成的表详细信息:机构表: enter image description here

服务区域覆盖表: enter image description here

最佳答案

我想这可能对你有帮助。

您应该使用包装类而不是基元。请将 ServiceAreaCoverage 类中的 double 更改为 Double,因为它甚至可以保存 null 值。确保 getter/setter 是 Double 而不是 double。

@Entity
@Table(name = "service_area_coverages")
public class ServiceAreaCoverage {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Double latitude;
private Double longitude;
private Double latitudeSpan;
private Double longitudeSpan;
}

注意:当数据库列设置为not-null="true"时,不能使用原始 double 型。
始终使用包装类,因此您不必考虑 0 或 null。

关于java - Hibernate 坚持零而不是双值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39580985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com