@Formula


@Formula  計算臨時屬性。

相當於可以關聯查詢字段,然后放在實體中當做屬性使用。

 

任務:在User實體層,增加一個額外的屬性,來獲取Test表中的name字段。

1 表結構

User表

Test表

2 User實體層(省略了部分字段。)

@Entity
@Table(name = "user", catalog = "testdb")
@DynamicUpdate
public class User {
    private Integer id;
    private String uuid;
 
    private String test;
 
    @Id
    @GeneratedValue
    @Column(name = "id")
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    @Column(name = "uuid")
    public String getUuid() {
        return uuid;
    }
 
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
 
    
    @Formula("(select t.name from test as t where t.id=id)")
    public String getTest() {
        return test;
    }
 
    public void setTest(String test) {
        this.test = test;
    }
}

我們可以看到,在getTest上,增加了@Formula注解。查詢表時,就會關聯Test表的name到屬性上。

注意:

首先 表增加別名。

其次 注意sql兩段的小括號()

最后 t.id=id 的最后那個id,對應屬性上的@Colun(value = "id")

 

3 通過jpa創建一個dao

@Repository
public interface UserDao extends JpaRepository<User,Integer> {
}

4 測試

@Autowired
    private UserDao userDao;
 
    @Test
    public void contextLoads() {
        System.out.println(userDao.findById(2).get().getTest());
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM