【发布时间】:2016-11-03 17:16:42
【问题描述】:
我在保存 claimDetail 对象后获取 id 时遇到问题,然后获取该已保存对象的 id 将变为 0 。其实我想得到那个保存的对象ID。但它不会来。我没有与 JPA 合作。我已经创建了一个用于调度的 Spring Boot 应用程序。
这是我的 ClaimDetails.java 实体类:
@Entity
@Table(name = "claimtrans")
public class ClaimTrans {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
claimDetail.setActive(1);
claimDetail.setVersion(new Long(1));
claimDetail.setCreatedBy(new Long(1));
claimDetail.setCreatedDate(new Date());
claimDetailService.saveClaimDetail(claimDetail);
int temp =claimDetail.getID()
温度为 0;
这是我的 JpaRepositoryFactory.java:
@Service
public class ClaimDetailService {
private JpaRepositoryFactory jpaRepositoryFactory;
@Autowired
public ClaimDetailService(JpaRepositoryFactory jpaRepositoryFactory) {
this.jpaRepositoryFactory = jpaRepositoryFactory;
}
@Transactional
public void saveClaimDetail(ClaimDetail claimDetail) {
JpaRepository<ClaimDetail, Long> mailAuditLogLongJpaRepository = jpaRepositoryFactory.getRepository(ClaimDetail.class);
mailAuditLogLongJpaRepository.save(claimDetail);
}
public List<ClaimDetail> getAllClaimDetail() {
JpaRepository<ClaimDetail, Long> mailAuditLogLongJpaRepository = jpaRepositoryFactory.getRepository(ClaimDetail.class);
return mailAuditLogLongJpaRepository.findAll();
}
}
这是我的 JPA 工厂。
@Component
public class JpaRepositoryFactory {
@PersistenceContext
private EntityManager entityManager;
public <T> T getRepository(Class clazz) {
notNull(clazz);
notNull(entityManager);
T crudRepository = (T) new SimpleJpaRepository(clazz, entityManager);
return crudRepository;
}
}
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<start-class>org.sam.application.Application</start-class>
<java.version>1.6</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
谁能帮我解决这个问题?
谢谢 司坦苏
【问题讨论】:
-
发布声明对象实体
-
@Deepanjan 我更新了我的问题
-
那么调用了什么 SQL 呢?又名“调试的第 1 步”
-
请注意:在某些数据库中,0 实际上是一个有效的自动生成 ID。你确定有问题吗?
-
你不需要做那么多我会发布一个你可以使用JpaRepository的解决方案。
标签: mysql spring jpa spring-boot entitymanager