【发布时间】:2016-09-19 19:49:47
【问题描述】:
我使用 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;
}
我正在尝试使用 Spring Data JpaRepository 的保存方法将 Agency 与 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> {
}
【问题讨论】:
-
你能告诉我们你的数据库表的结构吗?
-
您好@Beethoven,我添加了生成的表结构的屏幕截图。谢谢你关注这个问题。
-
嗯,还看不到,可能出了什么问题。只是一些一般的故障排除思路: 1.字段名称是否与相应的数据库列不同,例如
latitudeSpan/latitude_span映射正确,在某个地方? 2. 一个重要的地方当然是设置双字段的值。 3. 设置logger 'org.hibernate.SQL' 来调试查看Hibernate 生成的SQL 查询通常很有用。 -
您使用的是哪个数据库?请分享存储在 db 中的归零双数据的屏幕截图。
-
您的意思是任何双精度值(10.52)都存储为 0。还是 0.0 存储为 0?如果是第一个,请分享用于保存双精度值的整个代码。此外,详细说明为 Agency 和 ServiceAreaCoverage 类编写的代码。我想看看这些类的 getter/setter。
标签: java hibernate jpa spring-boot