簡體   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