java - 如果两个实体表之间没有关系,如何连接这些表?

标签 java hibernate jpa orm

我有 2 个实体

@Entity
@Table(name = "USER")
public class User implements Serializable {
    private Long id;
    private String username;
}

@Entity
@Table(name = "LOGS")
public class Logs implements Serializable {
        private Long id;
        private Long userId;
        private String message;
}

该实体没有关系。当LOGS填充时,我没有User实体(但我有userId),并且我在中设置了userId >LOGS(不是User实体/仅Long userId)。

当我在网页上显示用户日志时,我需要显示 LOGS 的所有字段:

id userId message
1  1       message1
2  1       message2
3  2       message3
4  2       message4

但我需要将 userId 替换为 UserName:

id user message
1  Bill       message1
2  Bill       message2
3  John       message3
4  John       message4

如果两个表之间没有关系,如何连接?我可以使用 native 查询,但也许没有必要?

最佳答案

已更新

在查询中,当您匹配 where 子句中的列时,应使用“旧”样式进行连接:

1)为投影字段创建类:

package org.myapp;

public class UserLogs{

   private Long id;
   private String username;
   private String message;

   public UserLogs(Long id, String username, String message){
       this.id = id;
       this.username = username;
       this.message = message;
   }

}

2)执行查询

String query =
   " select new org.myapp.UserLogs"+
   "(l.id, u.username, l.message) "+
   " from Logs l, User u"+
   " where l.userId = u.id";

List<UserLogs> userLogs = session.createQuery(query)
                      .list();

// process list

关于java - 如果两个实体表之间没有关系,如何连接这些表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848625/

相关文章:

java - 如何在 Spring Boot 中使用 CommandLineRunner?

java - Hibernate Java 持久化列问题

java - 使用 Spring Data JPA 获取 NumberFormatException

java - Hibernate:避免集合的隐式初始化

java - JPA:外键作为 NamedQuery 中的参数

java - JPA:如何在 save() 之前删除不必要的 SELECT?

java - 使用多个ManyToMany关系时的org.hibernate.exception.ConstraintViolationException

java - spring-boot @Scheduled pool-size 调试

java - Scala 中的新 Java 类 : takes type paremeters

java - 检查列表是否是 HashMap 中的值