我試圖基本上創建一個UPDATE
語句對我的MySQL數據庫通過Hibernate在Spring Boot應用程序中創建的條目,我一直沒能找到如何通過谷歌搜索在這條路線上做到這一點。在Spring Boot初始保存後更新Hibernate存儲庫條目
我曾經它最初由其CrudRepository保存生成自動主鍵ID實體:
@Entity
@Table(name = "all_contacts")
public class Contact {
private BigInteger userId;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="contactid")
private BigInteger contactId;
@NotNull
private String name;
private String imgPath;
// getters and setters
}
這裏是用作DAO的CRUDRepository
:
public interface ContactRepository extends CrudRepository<Contact, Long> { }
所以我當我在控制器中初始保存實體時,imgPath被留空:
// within the controller
@Autowired
ContactRepository contactDAO;
public void saveContact(SomeDTO dto) {
Contact contact = //... fields set and initialized
contactDao.save(contact);
BigInteger contactId = contact.getContactId();
// do something here to save and set contact's imgPath in the DB
}
所以我想要做的是,現在contactId
字段已經生成。被檢索contactId
和使用Hibernate來執行會有什麼本質上是一個UPDATE
聲明,這樣我可以在SQL列imgPath
設置行類似/savedir/contactImgId123456
所以,說的contactID
產生的是:12345,基本的SQL語句我試圖然後執行將是: UPDATE all_contacts SET imgpath = '/savedir/contactImgId123456' WHERE contactid = 12345;
我不知道這是否可行,但如果是這樣,我該怎麼做?
哦,太棒了!我查看了更多,並在完成後更新,這與使用findOne()方法類似,比如'Contact oldContact = findOne(12345)',是否正確?那麼,在對象關閉之前,事務還沒有真正完成嗎? – NateH06