Skip to content

Commit

Permalink
#152 - Made Interval usable as a JPA embeddable.
Browse files Browse the repository at this point in the history
Added a no-arg constructor required by JPA to Interval to allow the usage of the class as embeddable.
  • Loading branch information
odrotbohm committed Nov 18, 2016
1 parent 649518d commit 33e61d6
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/org/salespointframework/time/Interval.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.salespointframework.time;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Value;
Expand All @@ -17,6 +18,7 @@
* @author Oliver Gierke
*/
@Value
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
public final class Interval {

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.salespointframework.time;

import static org.assertj.core.api.Assertions.*;

import lombok.Data;

import java.time.LocalDateTime;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.junit.Test;
import org.salespointframework.AbstractIntegrationTests;
import org.springframework.beans.factory.annotation.Autowired;

/**
* Integration tests for {@link Interval}
*
* @author Oliver Gierke
*/
public class IntervalIntegrationTests extends AbstractIntegrationTests {

@Autowired SomeEntityRepository repository;
@Autowired EntityManager em;

/**
* @see #152
*/
@Test
public void intervalCanBePersistedAsEmbeddable() {

LocalDateTime now = LocalDateTime.now();

SomeEntity entity = new SomeEntity();
entity.interval = Interval.from(now).to(now.plusDays(1));

repository.save(entity);
em.flush();
em.clear();

SomeEntity result = repository.findOne(entity.id);
assertThat(result.interval).isEqualTo(entity.interval);
}

@Data
@Entity
static class SomeEntity {

@Id @GeneratedValue Long id;
@Embedded Interval interval;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.salespointframework.time;

import org.salespointframework.time.IntervalIntegrationTests.SomeEntity;
import org.springframework.data.repository.CrudRepository;

/**
* Repository interface for {@link SomeEntity}.
*
* @author Oliver Gierke
*/
public interface SomeEntityRepository extends CrudRepository<SomeEntity, Long> {}

0 comments on commit 33e61d6

Please sign in to comment.