简体   繁体   中英

How to give foreign key in Hibernate

This is My LOGIN1.java class

import java.io.Serializable;
public class LOGIN1 implements Serializable
{
    /**
 * 
 */
  private static final long serialVersionUID = 1L;
    private int id;
    private String Email;
    private String Password;
    private Registration registration;



    public Registration getRegistration() {
        return registration;
    }

    public void setRegistration(Registration registration) {
        this.registration = registration;
    }

    public int getId()
    {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEmail() {
        return Email;
    }
    public void setEmail(String email) {
        Email = email;
    }
    public String getPassword() {
        return Password;
    }
    public void setPassword(String password) {
        Password = password;
    }

    }

This Is My Registration.java import java.io.Serializable;

public class Registration implements Serializable
{
/**
 * 
 */
private static final long serialVersionUID = 1L;

private int id;
private String contact;
private String Name;
private String amount;
private LOGIN1 login1;



public LOGIN1 getLogin1() {
    return login1;
}
public void setLogin1(LOGIN1 login1) {
    this.login1 = login1;
}
public int getId()
{
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getContact() {
    return contact;
}
public void setContact(String contact) {
    this.contact = contact;
}
public String getName() {
    return Name;
}
public void setName(String name) {
    Name = name;
}
public String getAmount() {
    return amount;
}
public void setAmount(String amount) {
    this.amount = amount;
}

}

This Is My LOGIN1.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="LOGIN1" table="LOGIN1">

<id name="id" column="id" type="integer">

<generator class="increment"/>

</id>

<property name="Email" column="EMAIL" type="string"></property>

<property name="Password" column="Password" type="string"></property>

<one-to-one name="registration" class="Registration" cascade="save-update"></one-to-one>
</class>                              

</hibernate-mapping>

this is my Registration.hbm.xml

<id name="id" column="id" type="integer">

        <generator class="foreign">
            <param name="property">rg</param>
            </generator>
        </id>


<one-to-one name="login1" class="LOGIN1" constrained="true"></one-to-one>

<property name="Name" column="Name" type="string"></property>

<property name="contact" column="contct" type="string"></property>

<property name="amount" column="iamt" type="string"></property>

</class>

</hibernate-mapping>

This is my hibernate.cfg

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration> 
<session-factory>                         
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=HiberNate</property>
<property name="hibernate.connection.username">aaa</property>
<property name="hibernate.connection.password">aaa</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="show_sql">true</property>
<mapping resource="LOGIN1.hbm.xml"></mapping>
<mapping resource="Registration.hbm.xml"></mapping>

</session-factory>

</hibernate-configuration>

This is My Hiberservlets import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Restrictions; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; @WebServlet("/HiberServlet") public class HiberServlet extends HttpServlet { private static final long serialVersionUID = 1L;

public HiberServlet() {
}


@SuppressWarnings("deprecation")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try 
    {
     out.print("Hello");      
     String a,b,c,d,e;

    a=request.getParameter("cnm");
    b=request.getParameter("cntno");
    c=request.getParameter("amt");
    d=request.getParameter("eml");
    e=request.getParameter("pwd");

    Session s=HibernateUtil.openSession();
    Transaction tx = s.beginTransaction();


    try {

    LOGIN1 ln=new LOGIN1();
    ln.setEmail(d);
    ln.setPassword(e);
    s.save(ln);

    Criteria cr=s.createCriteria(LOGIN1.class);
    cr.add(Restrictions.eq("Email",d));
    cr.add(Restrictions.eq("Password",e));    
    int i=ln.getId();

  Registration rg=new Registration();
  rg.setId(i);
  rg.setName(a);
  rg.setContact(b);
  rg.setAmount(c);

  s.save(rg);

  tx.commit();

         }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    if(s!=null)
    {
     s.flush();                    
     s.close();   
    }     
    }
    catch(HibernateException e)
    {
        System.out.print(e.getMessage());

    }

}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

}

i am trying This but its Give error like java.lang.NullPointerException org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValue(AbstractEntityTuplizer.java:650) org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.java:4736) org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:96) org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:118) org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209) org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194) org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) org.hibernate.event.internal.DefaultSaveOrUpdateEventLi stener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715) org.hibernate.internal.SessionImpl.save(SessionImpl.java:707) org.hibernate.internal.SessionImpl.save(SessionImpl.java:702) HiberServlet.doGet(HiberServlet.java:77) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

And i am Using eclipse.what is problem in this code.

This

org.hibernate.PropertyNotFoundException: field [LOGIN1] not found on Registration

indicates, that your mapping does not match your class. There is probably no LOGIN1 property in the class. If it exists at all it is probably called login1 in lower case letters

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM