我使用Spring Boot 1.3.7.RELEASE作为应用程序框架,Hibernate作为JPA实现,Spring Data作为数据访问接口,MySQL 5.7.15作为存储服务器。我有两个模型:Agency
和ServiceAreaCoverage
。 Agency
目前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的保存方法将ServiceAreaCoverage
与Agency
保存在一起。 ServiceAreaCoverage
和double
都会得到保存,关键约束也会得到妥善管理。但是,@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
答案 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。