Hallo Ich lerne derzeit Hibernate und ich bin auf ein Problem fest, wo ich versuche, den Spaltennamen von Adresse zu Privatadresse und Büroadresse zu überschreiben. Ich habe alle Office-Adresse Code auskommentiert, aber die Spalte in der Datenbank sind immer noch "CITY_NAME", "STREET_NAME" und etc.Java-Hibernate-Attributoverride-Annotation funktioniert nicht?
Könnte jemand bitte dies erklären, danke.
Address.java
package org.zm.javabrain.dto;
import javax.persistence.Column;
import javax.persistence.Embeddable;
@Embeddable
public class Address {
@Column(name="STREET_NAME")
private String stree;
@Column(name="CITY_NAME")
private String city;
@Column(name="STATE_NAME")
private String state;
@Column(name="ZIP_NAME")
private String zip;
public String getStree() {
return stree;
}
public void setStree(String stree) {
this.stree = stree;
}
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 getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
}
dies UserDetails.java
package org.zm.javabrain.dto;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
@Entity // change the name of the entity
@Table(name="USER_DETAILS") // change the name of the table
public class UserDetails implements Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int userId;
private String username;
private Date joinedDate;
private String description;
@Embedded
@AttributeOverrides({
@AttributeOverride(name="street",[email protected](name="HOME_STREET_NAME")),
@AttributeOverride(name="city",[email protected](name="HOME_CITY_NAME")),
@AttributeOverride(name="state",[email protected](name="HOME_STATE_NAME")),
@AttributeOverride(name="zip",[email protected](name="HOME_ZIP_NAME"))})
private Address homeAddress;
// @Embedded
// @AttributeOverrides({
// @AttributeOverride(name="street",[email protected](name="OFFICE_STREET_NAME")),
// @AttributeOverride(name="city",[email protected](name="OFFICE_CITY_NAME")),
// @AttributeOverride(name="state",[email protected](name="OFFICE_STATE_NAME")),
// @AttributeOverride(name="zip",[email protected](name="OFFICE_ZIP_NAME"))})
// private Address officeAddress;
//
// public Address getOfficeAddress() {
// return officeAddress;
// }
// public void setOfficeAddress(Address officeAddress) {
// this.officeAddress = officeAddress;
// }
public Date getJoinedDate() {
return joinedDate;
}
public void setJoinedDate(Date joinedDate) {
this.joinedDate = joinedDate;
}
public Address getHomeAddress() {
return homeAddress;
}
public void setHomeAddress(Address homeAddress) {
this.homeAddress = homeAddress;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Dies ist Treiberklasse
package org.zm.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.zm.javabrain.dto.Address;
import org.zm.javabrain.dto.UserDetails;
public class HibernateTest {
public static void main(String[] args) {
UserDetails user = new UserDetails();
Address addr = new Address();
addr.setCity("chicago");
addr.setState("IL");
addr.setStree("Michigen Ave");
addr.setZip("55414");
Address officeAddr = new Address();
officeAddr.setCity("minneapolis");
officeAddr.setState("Washington Ave");
officeAddr.setState("MN");
officeAddr.setZip("55455");
user.setUsername("11111");
user.setHomeAddress(addr);
// user.setOfficeAddress(officeAddr);
user.setJoinedDate(new Date());
user.setDescription("this is a description");
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session.close();
}
}
Welchen hbm2ddl-Wert verwenden Sie? –
@AurelienEcoto hier ist es create-drop –
EricMA
In welcher Datei ist diese Eigenschaft definiert? 'Ich habe den ganzen Büro-Adress-Code auskommentiert, aber die Spalte in der Datenbank ...': Haben Sie die alten Tabellen fallen gelassen, bevor Sie Ihren Code ausgeführt haben? – ujulu