gpt4 book ai didi

java - hibernate 和Java

转载 作者:行者123 更新时间:2023-12-02 03:59:41 24 4
gpt4 key购买 nike

连接数据库并向其中插入数据时遇到问题。我已经在没有注释的情况下连接到它,但我需要使用注释。

我的 hibernate.cfg.xml 文件如下

<hibernate-configuration>
<session-factory>

<property name = "hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name = "hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name = "hibernate.connection.url">jdbc:oracle:thin:@fullproject.cyephgag55my.us-east-1.rds.amazonaws.com:1521:ORCL</property>
<property name = "hibernate.connection.username">sa</property>
<property name = "hibernate.connection.password">abcd1234</property>
<!-- Hibernate Options
<property name = "show_sql">true</property>
<property name="connection.pool_size">1</property>
<property name="hbm2ddl.auto">update</property>-->
<mapping resource="Db.hbm.xml"/>
<mapping class="com.exam.PersonalInfo"/>
</session-factory>
</hibernate-configuration>

我的Pojo是

import javax.persistence.*;
@Entity
@Table(name = "PersonalInfo")
public class PersonalInfo {
@Id @GeneratedValue
@Column
private String fname;
@Column
private String lname;
@Column
private int ssn;
@Column
private String dob;
@Column
private String address;
@Column
private String city;
@Column
private String state;
@Column
private String email;
@Column
private String password;
@Column
private String phoneNum;

public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public int getSsn() {
return ssn;
}
public void setSsn(int ssn) {
this.ssn = ssn;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
}

我用来执行所有操作的 java 文件是

public class ManagePerson {

public static void main(String[] args) {

//AnnotationConfiguration config = new AnnotationConfiguration();
//config.configure("/hibernate.cfg.xml");
System.out.println("Hola");
SessionFactory factory = new AnnotationConfiguration().configure("/hibernate.cfg.xml").buildSessionFactory();
Session session = (Session) factory.getCurrentSession().beginTransaction();
//Transaction tran = session.beginTransaction();
try{
PersonalInfo pi = new PersonalInfo();
pi.setFname("Steve");
pi.setLname("Rogers");
pi.setSsn(368572734);
pi.setDob("10/12/1937");
pi.setAddress("15 Captain America Rd.");
pi.setCity("Manhattan");
pi.setState("New York");
pi.setEmail("captainAmerica@gmail.com");
pi.setPassword("IamCaptAmerica1!");
pi.setPhoneNum("7812649845");
session.save(pi);
//tran.commit();
System.out.println("Person Added");
session.flush();
}catch(HibernateException e){
e.printStackTrace();
}
}
}

出现的错误是

Exception in thread "main" java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1080)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:765)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at ManagePerson.main(ManagePerson.java:19)

请告诉我我做错了什么或者我错过了什么。被注释掉的行也不会起作用。请帮忙...谢谢。

最佳答案

请在PersonalInfo类中添加一个成员属性“id”,并将该id属性映射到数据库表-PersonalInfo的唯一列

示例

 @Id @GeneratedValue
@Column(name = "id")
private int id;

关于java - hibernate 和Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com