Java 一个用户可以在mysql数据库中有多条消息
我试图使用Hibernate在用户表和消息表之间创建一对多关系。一个用户在消息数据库中可以有多条消息。但是,我无法得到它的模式。 这是我的密码 User.javaJava 一个用户可以在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
@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代码>,我想你不需要它