Skip to content

Instantly share code, notes, and snippets.

@MaciejDobrowolski
Created December 5, 2016 15:31
Show Gist options
  • Save MaciejDobrowolski/ce2e01a9f8b039266731d920bbcdfcc0 to your computer and use it in GitHub Desktop.
Save MaciejDobrowolski/ce2e01a9f8b039266731d920bbcdfcc0 to your computer and use it in GitHub Desktop.
package com.example;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@SpringBootApplication
public class SpringBootStackApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootStackApplication.class, args);
}
@Bean
CommandLineRunner commandLineRunner(VisitorRepository visitorRepository) {
return (args) -> {
Visitor visitor = new Visitor("007");
VisitorCharacteristic visitorCharacteristicA = new VisitorCharacteristic("123", "456");
VisitorCharacteristic visitorCharacteristicB = new VisitorCharacteristic("789", "000");
visitor.addVisitorCharacteristic(visitorCharacteristicA);
visitor.addVisitorCharacteristic(visitorCharacteristicB);
visitorRepository.save(visitor);
};
}
}
@Component
interface VisitorRepository extends JpaRepository<Visitor, Long> {
}
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
class Visitor {
@Id
@Column(name="visitor_revision_id")
@GeneratedValue(strategy= GenerationType.IDENTITY)
Long id;
String visitorCode;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "visitor")
List<VisitorCharacteristic> visitorCharacteristicList;
public Visitor() {
}
public Visitor(String visitorCode) {
this.visitorCode = visitorCode;
}
public void addVisitorCharacteristic(VisitorCharacteristic visitorCharacteristic) {
if (visitorCharacteristicList == null) {
visitorCharacteristicList = new ArrayList<>();
}
visitorCharacteristic.visitor = this;
visitorCharacteristicList.add(visitorCharacteristic);
}
}
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
class VisitorCharacteristic {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id;
@JoinColumn(name = "visitor_revision_id")
@ManyToOne(optional = false) //fetch = FetchType.EAGER, cascade = CascadeType.ALL)
Visitor visitor;
@Column(nullable = false)
String attributeCode;
@Column(nullable = false)
String attributeValue;
public VisitorCharacteristic() {
}
public VisitorCharacteristic(String attributeCode, String attributeValue) {
this.attributeCode = attributeCode;
this.attributeValue = attributeValue;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment