Hibernate持久化而不是双值

时间:2016-09-19 19:49:47

标签: java hibernate jpa spring-boot

我使用Spring Boot 1.3.7.RELEASE作为应用程序框架,Hibernate作为JPA实现,Spring Data作为数据访问接口,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; } 这是我的应用程序模型和映射。

Agency

我正在尝试使用Spring Data JpaRepository的保存方法将ServiceAreaCoverageAgency保存在一起。 ServiceAreaCoveragedouble都会得到保存,关键约束也会得到妥善管理。但是,@Service public class AgencyServiceImpl implements AgencyService { @Autowired private AgencyRepository agencyRepository; @Override public void createAgency(Agency agency) { this.agencyRepository.save(agency); } } 值未保存。而不是双值,零被保存。我想不出这个结果发生的任何原因,也没有想到排除故障的想法。所以任何帮助都会非常感激。这是我关于此事的其他一些代码和参考资料。

服务代码:

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

}

存储库接口代码:

-Raw

生成的表格详细信息: 代理商表: enter image description here

ServiceAreaCoverage表: enter image description here

1 个答案:

答案 0 :(得分:0)

我认为这可能对你有所帮助。

您应该使用包装类而不是基元。 请在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 =&#34; true&#34; 时,您无法使用原语double。                                                                                始终使用包装类,因此您不必考虑0或null。