我正在做一个学校项目,我在连接表格时遇到了麻烦,所以我可以使用 JSTL 在 JSP 文件中显示输出。我将提供所有必要的代码。我知道我需要以某种方式连接实体,但我不知道如何。SQL:CREATE TABLE IF NOT EXISTS `totelegram`.`contacts` (`id` INT NOT NULL AUTO_INCREMENT,`first_name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL,`last_name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL,`phone_number` VARCHAR(45) NOT NULL,PRIMARY KEY (`id`),UNIQUE INDEX `id_UNIQUE` (`id` ASC),UNIQUE INDEX `phone_number_UNIQUE` (`phone_number` ASC))ENGINE = InnoDB;CREATE TABLE IF NOT EXISTS `totelegram`.`messages` (`id_message` INT NOT NULL AUTO_INCREMENT,`message` VARCHAR(2000) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL,`time` VARCHAR(45) NOT NULL,`contacts_id` INT NOT NULL, PRIMARY KEY (`id_message`), UNIQUE INDEX `id_message_UNIQUE` (`id_message` ASC), INDEX `fk_messages_contacts_idx` (`contacts_id` ASC), CONSTRAINT `fk_messages_contacts` FOREIGN KEY (`contacts_id`) REFERENCES `totelegram`.`contacts` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;Contacts.java@Entity(name = "contacts")public class Contacts implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.AUTO)private int id;@javax.persistence.Column(name = "first_name")private String firstName;@javax.persistence.Column(name = "last_name")private String lastName;@javax.persistence.Column(name = "phone_number")private String phoneNumber;...getters/setters, constructor, toString...Messages.java@Entity(name = "messages")public class Messages implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.AUTO)@javax.persistence.Column(name = "id_message")private int id;private String message;private String time;@javax.persistence.Column(name = "contacts_id")private int contactsId;}我希望我很清楚。提前感谢大家。
1 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
据我了解,一个联系人可以有 N 条消息,而没有联系人就不能有消息,对吧?
由于您在类之间存在关系,因此您必须在 jpa 中使用特定的注释,例如:
在消息类中,您应该使用@ManyToOne 注释,因为您有许多消息用于一个联系人。JoinColumn 将在消息表中输入contacts_id 。
@ManyToOne
@JoinColumn(name = "contacts_id")
private Contacts contact;
在Contacts类中,您应该使用 @OneToMany 注释,因为一个联系人有很多消息。mappedBy 在消息类的联系中进行引用。
@OneToMany(mappedBy = "contact")
private List<Messages> messages = new ArrayList<>();
到目前为止,您在联系人和消息之间进行了双向引用。现在在您的服务类中,我建议您通过联系人查找消息,因为没有联系人就无法获得消息。它是一个存储库原则。
Contacts con = repository.findOne(1);
con.getMessages();
顺便说一句,抱歉英语不好。
添加回答
举报
0/150
提交
取消
