可嵌入/ManyToOne/OneToMany 不工作
Embeddable/ ManyToOne/ OneToMany not working
我很了解 Java,目前我正在开发 ChatProgramm。
因此,我想使用注入创建一个 table 消息,其中嵌入了我的 table 联系人的 ID (USERNUMBER)。
这是我的消息的 class:
@Embeddable
@Entity(name = "MESSAGE")
public class Message implements Serializable {
@ManyToOne
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "INCOME_MESSANGE", nullable = false)
private String incomingMessage;
@EmbeddedId
@JoinColumn(name = "USERNUMBER", nullable = false)
private Contact contact;
ChatApplicationRemote chatApplicationRemote;
public Message(String ip, String msg) throws IOException {
incomingMessage = msg;
contact = chatApplicationRemote.getcontactByIP(ip.toString());
}
public Message(){
}
public String getIncomingMessage() {
return incomingMessage;
}
public Contact getContact() {
return contact;
}
这是我的联系人:
@Entity(name = "CONTACTS")
@Embeddable
public class Contact implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6855140755056337926L;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "PRENAME", nullable = false)
private String vorname;
@Column(name = "IP", nullable = false)
private String ip;
@Column(name = "PORT", nullable = false)
private Integer port;
@Id
@OneToMany(mappedBy = "Message.incomingMessage")
@Column(name = "USERNUMBER", nullable = false)
private String usernumber;
public Contact(String usernumber, String name, String vorname, String ip, String port) {
super();
this.usernumber = usernumber;
this.name = name;
this.vorname = vorname;
this.ip = ip;
this.port = Integer.parseInt(port);
}
public Contact(){
}
public String getUsernumber() {
return usernumber;
}
//......
因此,在我的消息中,出现了两个错误:
@ManyToOne 抛出:目标实体 "java.lang.String" 不是实体
@EmbeddedID 抛出:de.nts.data.Contact 未映射为可嵌入的
所以我用谷歌搜索了一段时间.. 发现了一些我没有的关于 orm.xml 的东西。即使我创建了一个,@EmbeddedID throws:Embedded ID class 也应该包括 equals() 和 hashcode() 的方法定义,并且 orm.xml 属性 "usernumber" 中的映射类型无效这个语境。
有人可以帮忙吗?
尝试
@Entity
public class Message implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name = "INCOME_MESSANGE", nullable = false)
private String incomingMessage;
@ManyToOne
@JoinColumn(name = "USERNUMBER", nullable = false)
private Contact contact;
@Transient
ChatApplicationRemote chatApplicationRemote;
..
}
@Entity
public class Contact implements Serializable {
private static final long serialVersionUID = -6855140755056337926L;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "PRENAME", nullable = false)
private String vorname;
@Column(name = "IP", nullable = false)
private String ip;
@Column(name = "PORT", nullable = false)
private Integer port;
@Id
@Column(name = "USERNUMBER", nullable = false)
private String usernumber;
@OneToMany(mappedBy = "incomingMessage")
private LIst<Message> messages;
..
}
也许可以作为一个起点,但正如 JB Nizet 所建议的那样,从一些简单的 JPA/Java 演示开始,先获得基础知识并进行构建。您的示例比异常显示的错误更多,none 只需抛出 ORM.xml.
即可解决
我很了解 Java,目前我正在开发 ChatProgramm。 因此,我想使用注入创建一个 table 消息,其中嵌入了我的 table 联系人的 ID (USERNUMBER)。 这是我的消息的 class:
@Embeddable
@Entity(name = "MESSAGE")
public class Message implements Serializable {
@ManyToOne
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "INCOME_MESSANGE", nullable = false)
private String incomingMessage;
@EmbeddedId
@JoinColumn(name = "USERNUMBER", nullable = false)
private Contact contact;
ChatApplicationRemote chatApplicationRemote;
public Message(String ip, String msg) throws IOException {
incomingMessage = msg;
contact = chatApplicationRemote.getcontactByIP(ip.toString());
}
public Message(){
}
public String getIncomingMessage() {
return incomingMessage;
}
public Contact getContact() {
return contact;
}
这是我的联系人:
@Entity(name = "CONTACTS")
@Embeddable
public class Contact implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6855140755056337926L;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "PRENAME", nullable = false)
private String vorname;
@Column(name = "IP", nullable = false)
private String ip;
@Column(name = "PORT", nullable = false)
private Integer port;
@Id
@OneToMany(mappedBy = "Message.incomingMessage")
@Column(name = "USERNUMBER", nullable = false)
private String usernumber;
public Contact(String usernumber, String name, String vorname, String ip, String port) {
super();
this.usernumber = usernumber;
this.name = name;
this.vorname = vorname;
this.ip = ip;
this.port = Integer.parseInt(port);
}
public Contact(){
}
public String getUsernumber() {
return usernumber;
}
//......
因此,在我的消息中,出现了两个错误: @ManyToOne 抛出:目标实体 "java.lang.String" 不是实体 @EmbeddedID 抛出:de.nts.data.Contact 未映射为可嵌入的
所以我用谷歌搜索了一段时间.. 发现了一些我没有的关于 orm.xml 的东西。即使我创建了一个,@EmbeddedID throws:Embedded ID class 也应该包括 equals() 和 hashcode() 的方法定义,并且 orm.xml 属性 "usernumber" 中的映射类型无效这个语境。
有人可以帮忙吗?
尝试
@Entity
public class Message implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name = "INCOME_MESSANGE", nullable = false)
private String incomingMessage;
@ManyToOne
@JoinColumn(name = "USERNUMBER", nullable = false)
private Contact contact;
@Transient
ChatApplicationRemote chatApplicationRemote;
..
}
@Entity
public class Contact implements Serializable {
private static final long serialVersionUID = -6855140755056337926L;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "PRENAME", nullable = false)
private String vorname;
@Column(name = "IP", nullable = false)
private String ip;
@Column(name = "PORT", nullable = false)
private Integer port;
@Id
@Column(name = "USERNUMBER", nullable = false)
private String usernumber;
@OneToMany(mappedBy = "incomingMessage")
private LIst<Message> messages;
..
}
也许可以作为一个起点,但正如 JB Nizet 所建议的那样,从一些简单的 JPA/Java 演示开始,先获得基础知识并进行构建。您的示例比异常显示的错误更多,none 只需抛出 ORM.xml.
即可解决