ich ein Vermächtnis Datenbank-Design mit zwei Entitäten habenFrühling booten Viele einem mit nicht Schlüssel Joinspalte nicht funktioniert
@Entity
@Table(name = "tblRouters")
public class Router implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "nRouterID")
private Integer routerId;
@Column(name = "strRouterName")
private String routerName;
@Column(name = "strRouterIP")
private String routerIp;
@Column(name = "strLastAutomaticCheckTime")
private String lastCheckTime;
@Column(name = "nSupportedSnmpVersion")
private String protocol;
@OneToMany(fetch =FetchType.EAGER)
@JoinColumn(name="strIpAddr", referencedColumnName="strRouterIP")
//@JoinColumn(name="strIpAddr")
private Set<RouterDetail> routerDetails;
cons, getters setters....
und die RouterDetail Klasse
@Entity
@Table(name = "tblRouter_Detail")
public class RouterDetail implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "nObjectId")
private Integer objectId;
@Column(name = "cObjectType")
private Character objectType;
@Column(name = "strSysName")
private String systemName;
@Column(name = "strDescription")
private String systemDescription;
@ManyToOne()
@JoinColumn(name="strRouterIP")
private Router router;
Nach einigem Kampf ich es geschafft, das zu schaffen korrekte Zuordnung, die mir erlaubt, die Abfrage nach der Verwendung der referedColumnName in der @JoinColumn in Router-Klasse ausführen, aber ich brauche die Abfrage, um die Daten eifrig zu holen, so ging ich und änderte dies (auf der Router-Klasse)
@OneToMany()
zu
@OneToMany(fetch =FetchType.EAGER)
diese brach meinen Code mit der folgenden Ausnahme
Verursacht durch: com.microsoft.sqlserver.jdbc.SQLServerException: Ungültige Spaltenname 'strRouterIP'.
im mit Federverschluß 1.5.3 mit dieser Schnittstelle die Abfrage
public interface RouterService extends CrudRepository<Router, Integer> {
public Iterable<Router> findAllByRouterDetailsObjectType(Character objectType);
}
Was mit dieser Zuordnung auszuführen ist falsch?
beitreten modifizierende Bean Parameternamen anstelle der tatsächlichen Spaltennamen zu verweisen. Ich meine, ändern Sie Code wie @ManyToOne() @JoinColumn (name = "strRouterIP") privaten Router-Router; zu @ManyToOne() @JoinColumn (name = "routerIp") privater Router-Router; – Afridi
@afridi danke ich habe versucht zu tun, wie Sie vorschlagen, aber ich habe "ungültige Spaltenname 'routerIp'" – naoru