jpaテーブルクエリー1対多
2075 ワード
データベース#データベース#
表company
id, name
表employee
employee_id,employee_name,company_id,price,monthtime,amount
エンティティークラス
Company
import lombok.Data;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Entity
@Table(name = "company")
@Data
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
// 1
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name = "companyId")// 2
//or 2
@oneToMany(mappedBy="companyId",cascade=CascadeType.All,fetch=FetchType.EAGER)
private List employees=new ArrayList<>();
}
注記属性mappedByとは、関連関係がcompanyクラスのemployees属性から取得できることを意味します.Cascade属性はCascadeTypeに設定.ALLとは、主従表が全面的にカスケード関係を確立することである.Fetch属性はFetchTypeに設定.EAGERとは、ロードルールがインスタントロードであることを意味します.ソースコードを見るとデフォルトでOneToMany注記のfetch属性がFetchTypeに設定されていることがわかります.LAZY.
Employee
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import javax.persistence.*;
import java.math.BigDecimal;
@Entity
@Table(name = "employee")
@Data
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int employeeId;
private String employeeName;
private int companyId;
private BigDecimal price;
private int monthtime;
private BigDecimal amount;
}
Repositoryクラス
import com.xb.selltest.model.Company;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import javax.swing.text.html.Option;
import java.util.List;
import java.util.Optional;
public interface CompanyRepository extends JpaRepository {
List findById(int id);
}
サービス、impl、controllerを書く方法はみんな知っています.あるいは直接testに行ってもいいです