可嵌入/多个/ onetomany不起作用



i'M非常了解Java,目前我正在使用ChatProgramm。因此,我想创建一个使用注射的表触点的ID(用户名)嵌入的表消息。这是我的消息的课程:

@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并未映射为可嵌入的

所以我谷歌搜索了一段时间..并找到了有关我没有的东西。即使我创建了一个,@embeddedid投掷:嵌入式ID类也应包括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演示开始,以获取基础知识并建立。您的示例有更多的错误,而不是例外显示的错误,仅通过扔入ORM.XML来解决任何错误。

最新更新