【问题标题】:help to create Internal messaging帮助创建内部消息
【发布时间】:2011-01-17 10:34:44
【问题描述】:

我想创建一个内部消息传递系统,这就是我所做的 我有一个用户实体和一个消息

不知道这样好不好

public class Utilisateur implements Serializable {

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

private String name;

...

}

public class Messagerieinterne implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String sujet;
private Long   Idexpiditeur;
private Long IdReceiver ;

.. }

这个解决方案的问题是我应该使用 nativeQuery 方法在数据库中插入数据

如果你有什么建议

更多解释我想为我的站点创建一个消息系统(JSF2,EJB3,MYSQL),以便用户可以在它们之间发送消息

提前谢谢你

【问题讨论】:

    标签: java jsf ejb-3.0


    【解决方案1】:

    JPA 的目标是能够创建持久实体图。由于 OneToOne、OneToMany 和 ManyToMany 关系,这些实体在它们之间相互链接,以便能够导航到图表中。因此,一个消息实体应该有一个用户类型的接收者字段和一个用户类型的发送者字段。您还可以对反向关系建模:一个用户有很多发送的消息,也有很多接收的消息。 因此,您有两个 OneToMany 关系:

    1. 一个用户发送多条消息
    2. 一个用户收到许多消息

    因此,您的 Message 类应如下所示:

    public class MessagerieInterne implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String sujet;
    
    @ManyToOne(optional = false)
    @JoinColumn(name = "ID_EXPEDITEUR", nullable = false)
    private Utilisateur expediteur;
    
    @ManyToOne(optional = false)
    @JoinColumn(name = "ID_DESTINATAIRE", nullable = false)
    private Utilisateur destinataire;
    

    您的用户类中可能还有其他字段:

    public class Utilisateur implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @OneToMany(mappedBy = "expediteur")
    private List<MessagerieInterne> messagesEnvoyes;
    
    @OneToMany(mappedBy = "destinataire")
    private List<MessagerieInterne> messagesRecus;
    

    考虑对象,而不是考虑数据库表中的字段。 此外,请尊重 Java 命名约定(变量以小写、驼峰式等开头),避免混合使用法语和英语术语。

    对于这样的实体,我不明白为什么不能使用 EJBQL 和常规 JPA 方法在数据库中插入和读取消息。

    【讨论】:

    • 感谢您的帮助,它为我提供了目前最好的解决方案,感谢您的建议,下次我将尊重 Java 命名约定,再次感谢您
    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2021-09-16
    • 2012-08-17
    • 2011-09-03
    • 2016-06-21
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多