简体   繁体   English

如何在Hibernate中提供外键

[英]How to give foreign key in Hibernate

This is My LOGIN1.java class 这是我的LOGIN1.java类

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; 这是我的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 这是我的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 这是我的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 这是我的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; 这是我的Hiberservlets import java.io.IOException; import java.io.PrintWriter; 导入java.io.PrintWriter; import javax.servlet.ServletException; 导入javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; 导入javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; 导入javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; 导入javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 导入javax.servlet.http.HttpServletResponse; import org.hibernate.Criteria; 导入org.hibernate.Criteria; import org.hibernate.HibernateException; 导入org.hibernate.HibernateException; import org.hibernate.Session; 导入org.hibernate.Session; import org.hibernate.SessionFactory; 导入org.hibernate.SessionFactory; import org.hibernate.Transaction; 导入org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 导入org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; 导入org.hibernate.cfg.Configuration; import org.hibernate.criterion.Restrictions; 导入org.hibernate.criterion.Restrictions; import org.hibernate.service.ServiceRegistry; 导入org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; 导入org.hibernate.service.ServiceRegistryBuilder; @WebServlet("/HiberServlet") public class HiberServlet extends HttpServlet { private static final long serialVersionUID = 1L; @WebServlet(“ / HiberServlet”)公共类HiberServlet扩展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 我正在尝试这样做,但它的给定错误如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。 209)org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)org.hibernate.event.internal.DefaultSaveEventListener(performSave 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) 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. 我正在使用eclipse。这段代码中的问题是什么。

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. 该类中可能没有LOGIN1属性。 If it exists at all it is probably called login1 in lower case letters 如果完全存在,则可能用小写字母称其为login1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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