繁体   English   中英

如何在Hibernate中提供外键

[英]How to give foreign key in Hibernate

这是我的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;
    }

    }

这是我的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;
}

}

这是我的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>

这是我的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>

这是我的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>

这是我的Hiberservlets import java.io.IOException; 导入java.io.PrintWriter; 导入javax.servlet.ServletException; 导入javax.servlet.annotation.WebServlet; 导入javax.servlet.http.HttpServlet; 导入javax.servlet.http.HttpServletRequest; 导入javax.servlet.http.HttpServletResponse; 导入org.hibernate.Criteria; 导入org.hibernate.HibernateException; 导入org.hibernate.Session; 导入org.hibernate.SessionFactory; 导入org.hibernate.Transaction; 导入org.hibernate.boot.registry.StandardServiceRegistryBuilder; 导入org.hibernate.cfg.Configuration; 导入org.hibernate.criterion.Restrictions; 导入org.hibernate.service.ServiceRegistry; 导入org.hibernate.service.ServiceRegistryBuilder; @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
}

}

我正在尝试这样做,但它的给定错误如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)

我正在使用eclipse。这段代码中的问题是什么。

这个

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

表示您的映射与您的课程不匹配。 该类中可能没有LOGIN1属性。 如果完全存在,则可能用小写字母称其为login1

暂无
暂无

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

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