2015-06-17 3 views
0

я хочу, чтобы вставить в таблицу с заданным значением, но это просто не работает, вот мой код:JPA @Id annoation

@Id 
@Column(insertable=true,updatable=true) 
public Long getS_id() { 
    return s_id; 
} 


@Resource(name="studentService") 
private StudentService stus; 

Student student = new Student(); 
    student.setS_id(123213L); 
    student.setName("vincent"); 
    stus.add(student); 

Если я изменю:

@Id 
@Column(insertable=true,updatable=true) 
public Long getS_id() { 
    return s_id; 
} 

к этому:

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(insertable=true,updatable=true) 
public Long getS_id() { 
    return s_id; 
} 

и не установлен s_id Мануалы работает хорошо.

здесь мой ученик класса

@Entity() 
@Table(name="stu_info") 
public class Student implements Serializable{ 

private static final long serialVersionUID = 1L; 
/** 
* 学生的学号 
*/ 
private Long s_id; 
/** 
* 学生姓名 
*/ 
private String name; 
/** 
* 学生性别 
*/ 
private String sex; 
/** 
* 学生生日 
*/ 
private Date birthday; 

/** 
* 学生电话号码 
*/ 
private String telephone; 
/** 
* 学生所在年级 
*/ 
private String grade; 
/** 
* 学生所在班级 
*/ 
private String classes; 
/** 
* 学生编号 
*/ 
private int number; 
/** 
* 学生父亲姓名 
*/ 
private String father_name; 
/** 
* 学生母亲姓名 
*/ 
private String mother_name; 
/** 
* 学生个人疾病史 
*/ 
private String diseases_history; 

@Id 
@Column(insertable=true,updatable=true) 
public Long getS_id() { 
    return s_id; 
} 
public void setS_id(Long s_id) { 
    this.s_id = s_id; 
} 
@Column(length=32) 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
@Column(length=12) 
public String getSex() { 
    return sex; 
} 
public void setSex(String sex) { 
    this.sex = sex; 
} 
@Temporal(TemporalType.DATE) 
public Date getBirthday() { 
    return birthday; 
} 
public void setBirthday(Date birthday) { 
    this.birthday = birthday; 
} 

@Column(length=12) 
public String getTelephone() { 
    return telephone; 
} 
public void setTelephone(String telephone) { 
    this.telephone = telephone; 
} 
@Column(length=32) 
public String getGrade() { 
    return grade; 
} 
public void setGrade(String grade) { 
    this.grade = grade; 
} 
@Column(length=32) 
public String getClasses() { 
    return classes; 
} 
public void setClasses(String classes) { 
    this.classes = classes; 
} 
@Column(length=32) 
public int getNumber() { 
    return number; 
} 
public void setNumber(int number) { 
    this.number = number; 
} 
@Column(length=32) 
public String getFather_name() { 
    return father_name; 
} 
public void setFather_name(String father_name) { 
    this.father_name = father_name; 
} 
@Column(length=32) 
public String getMother_name() { 
    return mother_name; 
} 
public void setMother_name(String mother_name) { 
    this.mother_name = mother_name; 
} 
@Column(length=32) 
public String getDiseases_history() { 
    return diseases_history; 
} 
public void setDiseases_history(String diseases_history) { 
    this.diseases_history = diseases_history; 
} 

}

+0

Можете ли вы предоставить фрагмент кода, описывающий ваш объект Student, чтобы мы могли видеть ваши аннотации JPA? – whyceewhite

+0

«Не получится» немного расплывчато, не так ли? Не могли бы вы предоставить ошибку, которую вы получаете, если это не так много проблем? –

+0

ошибка отсутствует – vincentguc

ответ

0

Из ограниченной информации, размещенной я думаю, вы используете SQL Server и вставить запись в таблицу SQLServer с явным значением, определенным для идентичности В столбце требуется включить идентификационные вставки для этой таблицы.

https://msdn.microsoft.com/en-gb/library/ms188059.aspx

Так что, если вы запустите выше против вашей таблицы, вы должны затем иметь возможность сохраняться, используя определенное значение.

Так что на самом деле это не имеет никакого отношения к JPA.