반응형

기본 설정으로 sequelize를 사용 중이다.

maridb를 사용하여 실행하면 콘솔에 아래와 같이 경고가 나온다.

 

warning: please use IANA standard timezone format ('Etc/GMT0')

 

타임존 포맷 IANA표준으로 넣으라는 건데, 타임존 값을 설정한 적이 없는데, 표준을 사용하란.

유효성 검사 시 값이 없을 때는 체크를 안 하고 유효성에서 바로 검사해버리나 보다.

 

아래와 같이

"dialectOptions": {

      "timezone""Etc/GMT+9"

    }

옵션을 주었다.

 

 {
  "development": {
    "username": "root",
    "password": "password",
    "..." : "...",
 	"dialectOptions": {
		"timezone": "Etc/GMT+9"
	}
}
반응형
반응형

node 서버에서 sequelize 사용 시에 아래와 같은 경고가 나왔다.

 

(node:11664) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.

 

options.operatorsAliases 에는 boolean  v5에서는 안먹으니 지우거나 하라는 거 같다.

 

config.json 안에 접속정보에 

operatorsAliases 속성에 false를 수정해주면 된다.

false = 0, true = 1로 변경하면 경고가 안 나온다.

반응형
반응형

[Vue warn]: Failed to resolve directive: mode

v-mode라는게 없다는 거다


template에 v-mode라고 쓴 게 있을 것이다.

 

v-model2를 template에 사용하면
[Vue warn]: Failed to resolve directive: model2라고 나오겠다.

 

v-머시깽이 라고 하는 건 디렉티브인 거 같다.

만드는 것을 찾아보니 있다.
https://kr.vuejs.org/v2/api/index.html#Vue-directive

 

API — Vue.js

Vue.js - 프로그레시브 자바스크립트 프레임워크

kr.vuejs.org

 

vue에서 정의된 디렉티브들(Directives)이다.
https://vuejs.org/v2/api/#Directives
보니 거의 대부분 v-머시기다.

 

API — Vue.js

Vue.js - The Progressive JavaScript Framework

vuejs.org

어딘가에서 v-model 도 만들어진 거 같으나 디렉티브 생성 API를 통해 생성된 거 같진 않다.
찾아봐도 아직은 잘 모르겠다.

 

가장 기본인 거 같긴 한데 헤매고 있었다. 

반응형
반응형

org.springframework.data.mapping.PropertyReferenceException: No property name found for type

jpa에서 No property name found for type 엔터티명 뜨면서

인젝션 오류 발생한다.

기존에 만들었던 쿼리 메서드가 생성이 안돼서 발생했다.

기존에 있던 속성 이름으로 쿼리 메서드를 생성 후 엔터티 속성을 변경해도 쿼리 메서드엔 변화가 없어

없는 속성으로 쿼리 메서드를 만들어서 빈 생성이 안되고 인젝션이 안됬던 거다.

반응형
반응형

설치환경은 window 10 내에 oracle VM내에 가상 CentOS 7이다.

 

#docker search oracle

#docker search oracle

하면 여러 개 나온다.

docker search oracle

 

 

많이 사용하고 별점 많은걸 기준으로 oracleinanutshell/oracle-xe-11g 요놈을 선택했다.

 

#docker pull oracleinanutshell/oracle-xe-11g

#docker pull oracleinanutshell/oracle-xe-11g

docker pull oracle

pull 받을 때 로그인하라고 해서 허브에서 사용자 생성하고 로그인 후 받았다.

하단에 보면 알지만 no space left on device 때문에 삽질 후 진행할 수 있었다.

 

#docker run -d -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g

#docker run -d -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g

docker run oracle

 

#docker ps로 container id를 확인후 bash로 해당 컨테이너로 접속한다.

#docker exec -it cbb692a17cc5 bash

#docker exec -it cbb692a17cc5 bash

#sqlplus

#sqlplus


기본 접속 정보다.

hostname: localhost
port: 49161
sid: xe
username: system
password: oracle

반응형
반응형
package com.daonstar.web;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.stream.Collectors;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;



public class ListToMapTest {
	
	private List<Book> books;
	private final String NAME = "책읽자";
	private final int RELEASE_YEAR = 2009;
	private final String ISBN = "0101234929";
	private final int initAddBookCount = 3;
	
	@Before
	public void init() {
		System.out.println("@Before");
		books = new ArrayList<>();
		booksAdds();
	}
	
	@After
    public void tearDown() throws Exception {
		System.out.println("@After");
		books.clear();
    }

	private void booksAdds() {
		for (int i = 0; i < initAddBookCount; i++) {
			
			int releaseYear = RELEASE_YEAR;
			if ( i > 1 ) {
				releaseYear = RELEASE_YEAR + i;
			}
			books.add(new Book(NAME + i, releaseYear, ISBN + i));
		}
	}
	
	private Map<String, String> listToMap(List<Book> books) {
		return books.stream().collect(Collectors.toMap(Book::getIsbn,  Book::getName));
	}

	@Test
	public void whenConvertFromListToMap() {
		System.out.println("@test1");
		assertTrue(listToMap(books).size() ==3);
	}
	
	public Map<Integer, Book> listToMapWithDupKeyError(List<Book> books) {
		return this.books.stream().collect(Collectors.toMap(Book::getReleaseYear,  Function.identity()));
	}
	
	
	@Test(expected = IllegalStateException.class)
	public void whenMapHasDuplicateKey_whthout_merge_function_then_runtime_exception() {
		listToMapWithDupKeyError(books);
	}
	
	public Map<Integer, Book> listToMapWithDupKey(List<Book> books) {
		return books.stream().collect(Collectors.toMap(Book::getReleaseYear,  Function.identity(), (existing, replacement) -> existing));
	}
	
	@Test
	public void whenMapHasDuplicateKeyThenMergeFunctionHandlesCollision() {
		Map<Integer, Book> booksByYear = listToMapWithDupKey(books);
		assertEquals(2, booksByYear.size());
		assertEquals(ISBN + 0, booksByYear.get(RELEASE_YEAR).getIsbn());
	}
	
	public Map<Integer, Book> listToConcurrentMap(List<Book> books) {
		return books.stream().collect(Collectors.toMap(Book::getReleaseYear,  Function.identity(), (o1, o2) -> o1, ConcurrentHashMap::new));
	}
	
	@Test
	public void whenCreateConcurrentHashMap() {
		assertTrue(listToConcurrentMap(books) instanceof ConcurrentHashMap);
	}
	
	
	public TreeMap<String, Book> listToSortedMap(List<Book> books) {
		return books.stream()
				.sorted(Comparator.comparing(Book::getName))
				.collect(Collectors.toMap(Book::getName, Function.identity(), (o1, o2) -> o1, TreeMap::new));
	}
	
	@Test
	public void whenMapisSorted() {
		String firstBookName = "책읽자0";
		assertTrue(listToSortedMap(books).firstEntry().getKey().equals(firstBookName));
	}
	
	
}

 

나름 TDD하면서 해봤다.

아직  JUnit도 어설퍼서 이것저것 태스트 하느라 로그도 찍었다.

Collectors.toMap 요놈 이용해서 리스트를 맵으로 바꾸면 되는 요지인데, 키 중복일때 처리 방법도 있다.

요지는 list to map 인데 테스트 관련해서 리팩토링 할려고 노력중이라 코드가 산으로 가고 다른 생각이 많이 든다.

 

참고 https://www.baeldung.com/java-collectors-tomap

 

Java 8 Collectors toMap | Baeldung

Learn how to use the toMap() method of the Collectors class.

www.baeldung.com

 

반응형
반응형

DataJpaTest를 연습중이다.

아래와 같이 진행하면 testRepository.save() 하면 실제로 쿼리를 실행시키지 않는다.

기본으론 내장 메모리로 하는 것 같다.

@RunWith(SpringRunner.class)
@DataJpaTest 

아래와 같이 추가해주면 쿼리가 실행되며 쿼리가 찍히는걸 확인 할수 있다.

@Transactional(propagation = Propagation.NOT_SUPPORTED)

 

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html

 

46. Testing

A Spring Boot application is a Spring ApplicationContext, so nothing very special has to be done to test it beyond what you would normally do with a vanilla Spring context. By default, @SpringBootTest will not start a server. You can use the webEnvironment

docs.spring.io

찾아보니 기본적으로 data JPA 테스트는 트렌잭션과 롤백이 된다고 하고,

위에 설정을 통해 트랜젝션 비활성으로 설정이 된다고 나와 있다.

 

데이터가 영속성에 잘 들어갔는지 실제로 Assert로 데이터를 가져와서 확인을 할려면

EntityManager를 사용해서 확인하는데

@Transctional을 사용하면

@TestEntityManager는 접근이 안되고 @EntityManager로 접근해야한다.

 

반응형
반응형

가상 서버에 도커로 mariadb설치후 기본으로 db 생성 하고 테스트 진행 했더니 아래와 같이 insert가 실패된다.

DataJpaTest로 실행 시켜선지 기본 Console 에는 자세하고 안나오고 Failure Trace에 자세히 보면 알수 있다.

결국은 DB 언어셋을 잘 맞춰주면 된다.

-----------------------------------------------------------------------------------------------------

could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:300)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:536)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:534)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:305)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:138)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy103.save(Unknown Source)
at com.daonstar.web.apps.board.BoardRepositoryTest.insert_단건_성공(BoardRepositoryTest.java:68)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: org.hibernate.exception.DataException: could not execute statement
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:52)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3176)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3690)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:90)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3290)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2486)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:532)
... 48 more
Caused by: java.sql.SQLDataException: (conn=210) Incorrect string value: '\xEA\xB2\x8C\xEC\x8B\x9C...' for column `board`.`board`.`name` at row 1
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:225)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:165)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:238)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeInternal(MariaDbPreparedStatementClient.java:232)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.execute(MariaDbPreparedStatementClient.java:159)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeUpdate(MariaDbPreparedStatementClient.java:194)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
... 65 more
Caused by: java.sql.SQLException: Incorrect string value: '\xEA\xB2\x8C\xEC\x8B\x9C...' for column `board`.`board`.`name` at row 1
Query is: insert into board (created_date, editer_use_at, file_maximum_count, name, secret_use_type, update_date, id) values (?, ?, ?, ?, ?, ?, ?), parameters ['2019-06-07 10:00:07.6137353',0,2,'게시판이름','DISABLE','2019-06-07 10:00:07.6137353',16]
java thread: main
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:163)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:280)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeInternal(MariaDbPreparedStatementClient.java:223)
... 70 more

반응형
반응형

org.hibernate.LazyInitializationException: could not initialize proxy [com.jejunet.cms.server.domain.Server#216] - no Session

at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:169)

at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309)

at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:45)

at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:95)

at com.jejunet.cms.server.domain.Server$HibernateProxy$1dTl2oLJ.getName(Unknown Source)

at com.jejunet.cms.server.ServerServiceTest.getServer(ServerServiceTest.java:122)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:566)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)

at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)

at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)

at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)

at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)

at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)


아래와 같이 테스트 메소드를 단순히 저장하고 조회 하는데 예외 발생했다.

단건 가져오는것에 japRepository 기능 구현이 다른가보다.

repository.findByid(id);  /* Retrieves an entity by its id  */

repository.getOne(id);  /* Returns a reference to the entity with the given identifier. */ <= 이놈 쓰면 오류남 

@Test

public void getServer() {

Server savedServer = repository.save(new Server(SERVER_NAME));

Optional<Server> server2 = serverService.getServer(savedServer.getId());

assertEquals(savedServer.getName(), server2.get().getName());

}


아래 블로그에서 싶게 설명하고 있다. 

영속성 관련해서 레퍼런스만 필요할때 경우에 따라 쓴다고 하네요.(복잡함 ㅠㅠ)

https://bebong.tistory.com/entry/JPA-Lazy-Evaluation-LazyInitializationException-could-not-initialize-proxy-%E2%80%93-no-Session 

반응형
반응형

https://github.com/ojdkbuild/ojdkbuild 여기서 윈도우용 설치 가능한 파일을 다운로드 할수 있다.

github.com openjdk buildgithub.com openjdk build


openjdk 11로 설치할 예정이다.

java-11-openjdk-11.0.1.13-1.ojdkbuild.windows.x86_64.msi (sha256) 을 클릭 하여 다운로드 한다.

약 240MB 정도 된다.

다운로드 후 파일을 클릭하여 실행한다.

window defenderwindow defender java openjdk install

윈도우 Defender에서 차단한다. 그래도 그냥 실행해서..


설치 마법사화면이 보이며 진행한다.

openjdk wizardopenjdk wizard

라이센스 동의하고 다음 으로 진행한다.

openjdk license 동의openjdk license 동의

기본으로 JAVA_HOME Variable 과 JAR Files Association 은 선택이 안되어 있다.

일단 기본으로 설치한다.

설치경로는 기본으로 Program Files\ojdkbuild\java-11-openjdk-11.0.1.1-1\ 로 되어있다.

openjdk 설치 설정openjdk 설치 설정


java -version 하면 그냥 기존에 있던 버전으로 표시된다.

JAVA_HOME 환경변수를 안바꿔서 그렇다.


STS 에서 설치한 openJDK를 사용할수 있게 해보자.

Window -> Proferences -> java -> Installed JREs


sts Installed JREsWindow -> Proferences -> java -> Installed JREs


Add JRE 버튼으로 클릭 Standard VM 선택 Next 다음

sts add JRE


sts add JREJRE home

OpenJDK설치 경로를 선택하면 JAE name 이 알아서 선택된다.

Finish 로 완료 한다.

new spring starter projectnew spring starter project java version 11

새 스프링 프로젝트 를 누르면 Java  Version에 11 버전이 나오면 끝.




반응형

+ Recent posts