Ros*_*ion 16 spring jpa spring-data-jpa
嗨,我是Sprig Data JPA的新手,我很想知道即使我将Id传递给实体,Spring数据jpa也是插入而不是合并.我想当我实现Persistable接口并实现这两个方法时:
public Long getId();
public Boolean isNew();
Run Code Online (Sandbox Code Playgroud)
它会自动合并而不是持久化.
我有一个名为User的实体类:
@Entity
@Table(name = "T_USER")
public class User implements Serializable, Persistable<Long> {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "USER_ID")
private Long id;
@Column(name = "CREATION_TIME", nullable = false)
private Date creationTime;
@Column(name = "FIRST_NAME", nullable = false)
private String firstName;
@Column(name = "LAST_NAME", nullable = false)
private String lastName;
@Column(name = "MODIFICATION_TIME", nullable = false)
private Date modificationTime;
Run Code Online (Sandbox Code Playgroud)
还有另一堂课
@Entity
@Table(name = "T_USER_ROLE")
public class UserRole implements Serializable, Persistable<Long> {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long roleId;
@Column(name = "ROLE_NAME")
private String userRole;
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为UserRepostory的自定义存储库,扩展了JpaReopistory.因为我看到实现证明Spring Data Jpa使用以上两种方法进行更新或插入,所以我正在点击合并和保存.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
Run Code Online (Sandbox Code Playgroud)
我一直想弄清楚,但没有得到任何线索.也许你们可以提供帮助.
小智 40
我遇到了这个问题,试图实现Persistable
无济于事,然后查看Spring Data JPA源代码.我不一定在你的示例代码中看到这个,但@Version
我的实体中有一个字段.如果有一个@Version
字段,Spring Data将测试该值以确定该实体是否是新的.如果该@Version
字段不是原始字段且为null,则该实体被视为新实体.
这让我在测试中花了很长时间,因为我没有在我的表示中设置版本字段,而只在持久化实体上设置.我也没有在其他有用的Spring Data文档中看到这个(这是另一个问题......).
希望有人帮助!
归档时间: |
|
查看次数: |
25918 次 |
最近记录: |