Considérations sur le cadre de persistance Java 2017 (7) EclipseLink

Post précédent

Préface

Étant donné que j'écris en utilisant le temps d'intervalle, je vous serais reconnaissant si vous pouviez indiquer les parties avec une précision médiocre. Tout d'abord, excluez ceux qui sont EOL. Nous considérerons les fonctions payantes, mais nous ne les utiliserons pas réellement, en raison du problème des poches. La base de données utilisée est fixée à Postgre pour une raison stupide telle que "Eh bien, peut-être que Postgre peut être utilisé même s'il n'est pas spécifié."

environnement

Structure de la table

employeeテーブルからpostテーブルにID紐づけ

Gamme de correspondance

ORM Transaction Data Model DSL
×

○: Correspondance ×: non pris en charge

Impressions

échantillon

Recherche de table unique

Rechercher tout

Main.java


CriteriaQuery<Employee> query = em.getCriteriaBuilder().createQuery(Employee.class);
em.createQuery(query).getResultStream().forEach(e -> {
    System.out.format("%1s: %2s, %3s, %4s\n", e.id, e.first_name, e.middle_name, e.last_name);
});

Recherche de clé primaire

Main.java


CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Employee> query = builder.createQuery(Employee.class);
Root<Employee> root = query.from(Employee.class);
em.createQuery(query.select(root).where(builder.equal(root.get(Employee_.id), 1L)))
        .getResultStream()
        .forEach(e -> {
    System.out.format("%1s: %2s, %3s, %4s\n", e.id, e.first_name, e.middle_name, e.last_name);
});

Jointure de table

Main.java


em.createQuery(query.select(root).where(builder.equal(root.get(Employee_.id), 1L)))
        .getResultStream()
        .forEach(e -> {
    System.out.format("%1s: %2s, %3s, %4s\n", e.id, e.first_name, e.middle_name, e.last_name);
    e.posts.stream().forEach(p -> {
        System.out.format("\t%1s: %2s, %3s\n", p.id, p.employee_id, p.name);
    });
});

Employee.java


@Entity
@Table(name="employee")
public class Employee {
    @Id
    public long id;
    public String first_name;
    public String middle_name;
    public String last_name;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "employee_id", table = "post")
    public List<Post> posts;
}

Post.java


@Entity
@Table(name="post")
public class Post {
    @Id
    public long id;
    public long employee_id;
    public String name;
}

Le point

Points addictifs

--Lorsque vous construisez en utilisant EclipseLink 2.7.0 normalement, vous vous fâchez que "javax.persistence ait une signature différente".

Après la publication

N'est pas encore.

Article de référence

Recommended Posts

Considérations sur le cadre de persistance Java 2017 (7) EclipseLink
Considération sur le cadre de persistance Java 2017 (résumé) -1
Considération sur le cadre de persistance Java 2017 (6) Ebean
Considération sur le framework de persistance Java 2017 (5) Iciql
Considération sur le framework de persistance Java 2017 (1)
Considérations sur le cadre de persistance Java 2017 (8) Hibernate5
Considérations sur le cadre de persistance Java 2017 (2) Doma2
framework java
Devinez le cadre de persistance Java 2017 (3) Reladomo
Comparaison du framework Java
[Java] Cadre de collection
Conseils pour Play Framework2.5 (Java)
[Développement] Comparaison du framework Java
Apprentissage du framework Java # 1 (version Mac)
Gestion des versions Java sur macOS
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Rétrograder Java sur openSUSE Linux
Réflexion sur la manipulation de chaînes Java
En passant Java Gold SE 8
Oracle Java 8 sur Docker Ubuntu
Notes de révision de Java Collections Framework
Installez Java sur WSL Ubuntu 18.04
Exécutez l'applet java sur ubuntu
Mettez Oracle Java 8 dans CircleCI 2
Changer la version java sur CentOS
Installez java 1.8.0 sur Amazon linux2