有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

oracle Hibernate和Java

我在连接数据库和向其中插入数据时遇到了问题。我连接到它时没有注释,但我需要使用注释

我的冬眠。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)

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


共 (1) 个答案

  1. # 1 楼答案

    请在PersonalInfo类中添加成员属性“id”,并将此id属性映射到db表PersonalInfo的唯一列

    范例

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