vendredi 13 mars 2015

Spring data Join four tables

This is it my database project:


enter image description here I have a problem with the correct combination of tables, as it is in the picture. This is my files:


Category.java



@Entity
public class Category {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String categoryName;

protected Category() {}

public Category(String categoryName) {
this.categoryName = categoryName;
}

public String getCategoryName() {
return categoryName;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}

@Override
public String toString() {
return String.format(
"Customer[id=%d, firstName='%s']",
id, categoryName);
}

}


Items.java



@Entity
@Table(name = "Items")

public class Items {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int ItemId;
private String ItemName;
private String price;
private Set<Locals> locals = new HashSet<Locals>(0);

public Items(){

}

public Items(String price, String itemName) {

this.price = price;
this.ItemName = itemName;
}

public void setItemId(int itemId) {
ItemId = itemId;
}

public void setLocals(Set<Locals> locals) {
this.locals = locals;
}

public void setPrice(String price) {
this.price = price;
}

public void setItemName(String itemName) {
ItemName = itemName;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "ItemId", unique = true, nullable = false)
public int getItemId() {
return ItemId;
}
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "itemsTo")
public Set<Locals> getLocals() {
return locals;
}
@Column(name = "price", nullable = false, length = 10)
public String getPrice() {
return price;
}
@Column(name = "ItemName", nullable = false, length = 10)
public String getItemName() {
return ItemName;
}
}


Locals.java



@Entity
@Table(name = "Locals")

public class Locals {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int LocalId;
private String localName;
private String address;
private String phoneNumber;
private String coorX;
private String coorY;
private Set<Items> itemsTo = new HashSet<Items>(0);

public Locals(){

}

public Locals(String localName,String address,String phoneNumber, String coorY, String coorX) {
this.coorY = coorY;
this.coorX = coorX;
this.phoneNumber = phoneNumber;
this.address = address;
this.localName = localName;
}
public Locals(String localName,String address,String phoneNumber, String coorY, String coorX, Set<Items> itemsTo) {
this.coorY = coorY;
this.coorX = coorX;
this.phoneNumber = phoneNumber;
this.address = address;
this.localName = localName;
this.itemsTo = itemsTo;
}

public void setLocalId(int localId) {
LocalId = localId;
}

public void setLocalName(String localName) {
this.localName = localName;
}

public void setAddress(String address) {
this.address = address;
}

public void setCoorX(String coorX) {
this.coorX = coorX;
}

public void setCoorY(String coorY) {
this.coorY = coorY;
}

public void setItemsTo(Set<Items> itemsTo) {
this.itemsTo = itemsTo;
}

public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "LocalId", unique = true, nullable = false)
public int getLocalId() {
return LocalId;
}
@Column(name = "localName", unique = false, nullable = false, length = 10)
public String getLocalName() {
return localName;
}
@Column(name = "address", unique = false, nullable = false, length = 10)
public String getAddress() {
return address;
}
@Column(name = "phoneNumber", unique = false, nullable = false, length = 10)
public String getPhoneNumber() {
return phoneNumber;
}
@Column(name = "coorX", unique = false, nullable = false, length = 10)
public String getCoorX() {
return coorX;
}
@Column(name = "coorY", unique = false, nullable = false, length = 10)
public String getCoorY() {
return coorY;
}
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "ItemsFinall", joinColumns = {
@JoinColumn(name = "LocalId", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "ItemId",
nullable = false, updatable = false) })
public Set<Items> getItemsTo() {
return itemsTo;
}
}


and ItemsFinall.java



@Entity
@Table(name = "ItemsFinall")
public class ItemsFinall {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private int ItemId;
private int CategoryId;
private int LocalId;


public ItemsFinall(int id, int localId, int categoryId, int itemId) {
this.LocalId = localId;
this.CategoryId = categoryId;
this.ItemId = itemId;
this.id=id;
}

public void setId(int id) {
this.id = id;
}

public void setLocalId(int localId) {
LocalId = localId;
}

public void setCategoryId(int categoryId) {
CategoryId = categoryId;
}

public void setItemId(int itemId) {
ItemId = itemId;
}

public int getLocalId() {
return LocalId;
}

public int getCategoryId() {
return CategoryId;
}

public int getItemId() {
return ItemId;
}

public int getId() {
return id;
}
}


I get the following error: Caused by: org.springframework.data.mapping.PropertyReferenceException: No property categoryName found for type ItemsFinall!


I do not know what to do to properly connect the table.


Aucun commentaire:

Enregistrer un commentaire