1
我開發了一個簡單的網絡應用程序,通過休眠連接到MySQL。在某一點上,我甚至成功地創建了一個連接並將java對象插入到數據庫中。然而,之後我做了一些改變,以滿足我的項目需求,在那裏我搞砸了。無論我嘗試調試它多少,我都會收到此錯誤「沒有爲實體指定標識符」。我甚至從零開始創建了一個新項目,但徒勞無功。請幫助我確定我做錯了什麼。休眠:沒有爲實體指定標識
package com.proj.beandb;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
@ManagedBean
@SessionScoped
@Entity
@Table(name="dbstat")
public class Hibernate
{
@Id
@Column(name="first_name")
private static String fname;
@Column(name="last_name")
private static String lname;
public Hibernate(){}
public Hibernate(String fname, String lname)
{
Hibernate.fname = fname;
Hibernate.lname = lname;
}
public static void main(String[] args) {
// create session factory
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
.addAnnotatedClass(Student.class)
.buildSessionFactory();
// create session
Session session = factory.getCurrentSession();
try {
// create a student object
System.out.println("Creating new object");
Hibernate tempRec = new Hibernate("bah", "blah");
// start a transaction
session.beginTransaction();
// save the object
session.save(tempRec);
// commit transaction
session.getTransaction().commit();
System.out.println("Done!");
}
finally {
factory.close();
}
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
Hibernate.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
Hibernate.lname = lname;
}
}
`
更新您的完整堆棧跟蹤,以便我們可以找到錯誤的位置 –
爲了將字符串字段用作id,您需要將下面的註釋@GeneratedValue(generator =「uuid」)@GenericGenerator(name =「uuid 「,strategy =」uuid2「)@Column(name =」PR_KEY「)private String prKey; – LearningPhase
以上是您需要根據您的要求對其進行更改的示例 – LearningPhase