[英]getting org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
[英]SQL server identity ON but org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned beforeQuery calling save()
I'm building a rest web service in Java with json input hibernate for DB connection and for DB I'm using MS SQL Server as my database. 盡管我的 DB 表 ID 列設置為自動增量,但我遇到了此 class 的錯誤 ID,必須在查詢調用 save() 之前手動分配
以下是我的 JSON 請求示例:
{
"message": "Hi",
"createdOn": "2020-04-29T19:39:14.589+05:30",
"amount": "58.1"
}
我的model class是這樣的,我都試過了。 自動增量在我的 SQL 服務器表中打開,可能是什么問題?:
import java.util.Date;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name = "MessagesDetail")
@XmlRootElement
public class Message
{
@Id
@Column(name = "msg_id",unique=true, nullable = false)
@GeneratedValue(strategy=GenerationType.AUTO)
private Long msg_id;
@Column
private String message;
@Column
private Date createdOn;
@Column
private Double amount;
public Long getMsg_id()
{
return msg_id;
}
public void setId(Long msg_id)
{
this.msg_id= msg_id;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}
public Date getCreatedOn()
{
return createdOn;
}
public void setCreatedOn(Date createdOn)
{
this.createdOn = createdOn;
}
public Double getAmount()
{
return amount;
}
public void setAmount(Double amount)
{
this.amount = amount;
}
public Message()
{
}
public Message(Long id, String message, Date createdOn, Double amount)
{
this.id = id;
this.message = message;
this.createdOn = createdOn;
this.amount = amount;
}
}
然后我使用以下代碼保存它:
public void addMessage(Message bean){
Session session = SessionUtil.getSession();
Transaction tx = session.beginTransaction();
addMessage(session,bean);
tx.commit();
session.close();
}
private void addMessage(Session session, Message bean){
Message message = new Message();
message.setMessage(bean.getMessage());
message.setCreatedOn(bean.getCreatedOn());
message.setAmount(bean.getAmount());
session.save(Message);
}
我將我的 id 參數 class 的映射更改為標識而不是分配,現在它可以正常工作了。 請參閱以下更改:
前:
<class name="com.sample.rest.model.Message" table="MessagesDetail">
<id name="msg_id" type="java.lang.Integer">
<column name="msg_id"></column>
<generator class="assigned"></generator>
</id>
后:
<class name="com.sample.rest.model.Message" table="MessagesDetail">
<id name="msg_id" type="java.lang.Integer">
<column name="msg_id"></column>
<generator class="identity"></generator>
</id>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.