Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个用户可以在mysql数据库中有多条消息_Java_Mysql_Hibernate - Fatal编程技术网

Java 一个用户可以在mysql数据库中有多条消息

Java 一个用户可以在mysql数据库中有多条消息,java,mysql,hibernate,Java,Mysql,Hibernate,我试图使用Hibernate在用户表和消息表之间创建一对多关系。一个用户在消息数据库中可以有多条消息。但是,我无法得到它的模式。 这是我的密码 User.java @Entity @Table public class User { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; @ManyToOne User user; @Column(unique

我试图使用Hibernate在用户表和消息表之间创建一对多关系。一个用户在消息数据库中可以有多条消息。但是,我无法得到它的模式。 这是我的密码

User.java

@Entity
@Table
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    User user;
    @Column(unique = true)
    private String username;
    private String password;

    @OneToMany
    Message message;

    public User(String userName, String password) {
        this.username = userName;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }


    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
Message.java

@Entity
public class Message {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String sender;
    private String receiver;
    private String content;

    @Type(type="timestamp")
    private Date created;

    public Message() {

    }

    public Message(String sender, String receiver, String content) {
        this.sender = sender;
        this.receiver = receiver;
        this.content = content;
        this.created = new Date();
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public int getId() {
        return id;
    }

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

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}
这是我的模式

CREATE TABLE `Message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `receiver` varchar(255) DEFAULT NULL,
  `sender` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `User` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `password` varchar(255) DEFAULT NULL,
  `username` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK_jreodf78a7pl5qidfh43axdfb` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;

但不幸的是,我无法获得用户和消息的一对多关系。有人能帮我做吗。如何设计一个模式来获得一对多关系,以及如何更改POJO类来实现它?

尝试在指向用户的消息类中放置一个多通装饰器

@ManyToOne
public User getUser() { return user; }
public void setUser(User user) { this.user = user; }
private User user;

并从用户中删除@OneToMany

如果以错误的方式实现了
OneToMany
关系,则应该在
用户
实体中使用
消息集合

@OneToMany
private List<Messages> messages;  // Or Set<>
@OneToMany
私人列表消息;//或设置

您究竟是如何无法获得这种关系的?您是否有任何控制台错误或任何可以给我们提供线索的信息?此外,我不明白在
user
类本身,
@manytone user,我想你不需要它