Hibernate-Annotationen, wie @Joincolumn beziehen sich auf einen foreign key?
Verwende ich Hibernate 3.6.8. Hier ist meine Tabellen:
CREATE TABLE UTILIZATION (
ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY
...
FK_WORKCATEGORY SMALLINT,
CONSTRAINT PK_UTILIZATION PRIMARY KEY ( ID));
CREATE TABLE DB2ADMIN.WORKCATEGORY(
ID SMALLINT NOT NULL,
DESCRIPTION VARCHAR(50),
CONSTRAINT PK_WORKCATEGORY PRIMARY KEY(ID));
ALTER TABLE UTILIZATION ADD FOREIGN KEY (FK_WORKCATEGORY) REFERENCES WORKCATEGORY(ID);
meine Pojos:
@Entity
@Proxy(proxyClass=IWorkCategory.class)
@Table(name="WORKCATEGORY")
public class WorkCategory extends BoBase implements Serializable, IWorkCategory{
@Id
private Integer Id;
private String description;
@Override
public Serializable getId() {
return Id;
}
@Override
public void setId(Serializable id) {
Id = (Integer)id;
}
@Override
public String getDescription() {
return description;
}
@Override
public void setDescription(String description) {
this.description = description;
}
}
@Entity
@Proxy(proxyClass=IUtilization.class)
@Table(name="UTILIZATION")
public class Utilization extends BoBase implements Serializable, IUtilization{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long Id;
private WorkCategory workCategory;
@ManyToOne(fetch=FetchType.LAZY, targetEntity=WorkCategory.class)
@JoinColumn(name="FK_WORKCATEGORY", updatable=false, insertable=false)
public WorkCategory getWorkCategory() {
return workCategory;
}
public void setWorkCategory(WorkCategory workCategory) {
this.workCategory = workCategory;
}
}
Wie Sie sehen können die Tabelle die Auslastung siehe Tabelle WorkCategory
durch foreign key -FK_WORKCATEGORY
, aber in Utilization
pojo, erkläre ich diese Eigenschaft mit dem Namen workCategory
.
Wenn ich unit-Tests für Utilization bo = UtilizationDAO.get(new Long(123))
, das SQL generiert wird, mit der Spalte UTILIZATIO0_.WORKCATEGORY, statt FK_WORKCATEGORY
.
Ich habe die @JoinColumn(name="FK_WORKCATEGORY", in der Utilization
Pojo, aber es hilft nicht.
Bitte helfen Sie mir, diesen Fehler zu beheben. Vielen Dank im Voraus.
InformationsquelleAutor Danh Ngoc Phi | 2011-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil Sie Ihre Anmerkungen an die getter und anstatt in auf das Feld. Da die
@Id
annotation wird auf ein Feld, Hibernate erwartet, dass alle Anmerkungen werden auf den Feldern.Ja, ich weiß 😉
Hi JB Nizet, Können Sie mir bitte helfen in stackoverflow.com/questions/18895585/...
Sie fixierte meine Ausnahme. Hätte nie erwartet, dass es etwas so einfaches wie das. danke Mann!
InformationsquelleAutor JB Nizet