Ich arbeite mit Spring MVC und JPA. Ich möchte die Daten aus zwei Klassen (Tabellen) zusammenfügen und Daten aus beiden Tabellen über thymeleaf html anzeigen. Verbinden Sie zwei Tabellen und zeigen Sie die abgerufenen Informationen in thymeleaf
Dies sind die beiden Klassen I anschließen möchten:
@Entity
@Table(name = "package_aud")
public class PackageAudited {
@Column(name="id")
private Integer id;
@Id
@GeneratedValue
@Column(name="rev")
private Integer rev;
@Column(name="revtype")
private Integer revtype;
@OneToOne
@JoinColumn(name = "rev", nullable=true)
private RevisionInfo info;
... more attributes and getters/setters
Und
@Entity
@RevisionEntity(RevListener.class)
@Table(name = "revinfo")
public class RevisionInfo {
@Id
@RevisionNumber
@GeneratedValue
@Column(name="rev")
private Integer rev;
@RevisionTimestamp
@Column(name="revtstmp")
private Date revtstmp;
@Column(name="revuser")
private String revuser;
... getters/setters
Dies ist das Repository ist, wo ich versuche, die Tabellen mit einer Abfrage zu verbinden:
public interface PackageAuditedRepository extends
CrudRepository<PackageAudited, Long> {
@Query("SELECT p, c FROM PackageAudited p join p.info c WHERE p.id =:id AND p.rev = c.rev")
List<PackageAudited> findById(@Param("id") Integer id);
Controller-Eintrag für die HTML-Vorlage:
@PostMapping("/listSelectedPackage")
public String selectedPackage(@RequestParam("packageId") Integer packageId, Model model) {
Iterable<PackageAudited> specificPackageHistory = this.packageAuditedRepository.findById(packageId);
model.addAttribute("specificPackageHistory", specificPackageHistory);
return "/package/listSelectedPackage";
}
HTML-Vorlage der verbundenen Daten zeigen:
<table class ="center">
<thead>
<tr>
...
</tr>
</thead>
<tbody>
<tr th:each="package : ${specificPackageHistory}">
<td th:text="${package.rev}"> </td>
<td th:text="${package.id}"> </td>
<td th:text="${package.revuser}"></td>
<td th:text="${package.revtstmp}"></td>
</tr>
</tbody>
</table>
Mein Code funktioniert, wenn ich versuche, nur die Daten aus der PackageAudited Klasse zu zeigen. Meine Abfrage bringt keine Ergebnisse und ich bin mir auch nicht sicher, ob $ {package.revuser} und $ {package.revtstmp} funktionieren.
Ich denke, diese Frage hilft, https://StackOverflow.com/questio ns/43922501/feder-jpa-hibernate-how-to-perform-verbinden-von-zwei-entities-in-one-repository – akhilsk