어떻게 실행해야되는지 모르겠습니다.. 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
안녕하세요, JPA 강의 잘 듣고 있습니다. 실전예제2 실습을 진행하면서 아래와 같은 에러 메시지가 발생하였습니다. H2 데이터베이스에는, ORDER 테이블을 제외한 다른 테이블(+인덱스 포함) 및 시퀀스는 생성되었으며, ORDER 테이블만 생성되지 않았습니다. 코드 진행 시 어떤 실수를 했기에 발생한 문제인지 알 수 있을까요? 코드 압축파일도 첨부합니다. ( 링크 ) 2월 08, 2023 4:53:12 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@40712ee9] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table ORDER if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table ORDER if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:375) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings(SchemaDropperImpl.java:359) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:241) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:154) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:126) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:112) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:144) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpabook.jpashop.JpaMain.main(JpaMain.java:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a drop table [*]ORDER if exists"; expected "identifier"; SQL statement: drop table ORDER if exists [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5645) at org.h2.command.Parser.parseDrop(Parser.java:2188) at org.h2.command.Parser.parsePrepared(Parser.java:776) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@34f392be] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table ORDER ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), MEMBER_ID bigint, primary key (ORDER_ID) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table ORDER ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), MEMBER_ID bigint, primary key (ORDER_ID) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpabook.jpashop.JpaMain.main(JpaMain.java:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a create table [*]ORDER (\000d\000a ORDER_ID bigint not null,\000d\000a orderDate timestamp,\000d\000a status varchar(255),\000d\000a MEMBER_ID bigint,\000d\000a primary key (ORDER_ID)\000d\000a )"; expected "identifier"; SQL statement: create table ORDER ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), MEMBER_ID bigint, primary key (ORDER_ID) ) [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5645) at org.h2.command.Parser.parseCreateTable(Parser.java:9253) at org.h2.command.Parser.parseCreate(Parser.java:6784) at org.h2.command.Parser.parsePrepared(Parser.java:763) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " alter table ORDER add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 foreign key (MEMBER_ID) references MEMBER" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table ORDER add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 foreign key (MEMBER_ID) references MEMBER" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:375) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpabook.jpashop.JpaMain.main(JpaMain.java:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a alter table [*]ORDER \000d\000a add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 \000d\000a foreign key (MEMBER_ID) \000d\000a references MEMBER"; expected "identifier"; SQL statement: alter table ORDER add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 foreign key (MEMBER_ID) references MEMBER [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5645) at org.h2.command.Parser.parseAlterTable(Parser.java:8476) at org.h2.command.Parser.parseAlter(Parser.java:7548) at org.h2.command.Parser.parsePrepared(Parser.java:747) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " alter table ORDER_ITEM add constraint FK1pnpc71663ei4208mahu6w8os foreign key (ORDER_ID) references ORDER" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table ORDER_ITEM add constraint FK1pnpc71663ei4208mahu6w8os foreign key (ORDER_ID) references ORDER" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:375) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpabook.jpashop.JpaMain.main(JpaMain.java:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a alter table ORDER_ITEM \000d\000a add constraint FK1pnpc71663ei4208mahu6w8os \000d\000a foreign key (ORDER_ID) \000d\000a references [*]ORDER"; expected "identifier"; SQL statement: alter table ORDER_ITEM add constraint FK1pnpc71663ei4208mahu6w8os foreign key (ORDER_ID) references ORDER [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.parseReferences(Parser.java:9180) at org.h2.command.Parser.parseTableConstraintIf(Parser.java:9114) at org.h2.command.Parser.parseAlterTable(Parser.java:8479) at org.h2.command.Parser.parseAlter(Parser.java:7548) at org.h2.command.Parser.parsePrepared(Parser.java:747) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@12968227' 2월 08, 2023 4:53:12 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test]
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 안녕하세요 public Member findOne(Long id){ return em.find(Member.class, id ) ; } 에서 id 는 pk라고 하셨는데 Member 클래스에 있는 @Id 붙은 private Long id와 동일하다고 생각하면 될까요? (제가 기본편 안 듣고 야생형으로 실전편 부터 듣고 있어서요. 기초적인 거 같은데 여쭤봐서 죄송합니다ㅠ)
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/) [질문 내용] 안녕하세요 JPA강의와 queryDsl 강의를 모두 들으면서 포폴을 만들던 중 궁금한게 생겨 질문드립니다 . 먼저 질문이 많아서 죄송하고 늘 감사드립니다. 1.질문 jpa에서 update(변경감지를 사용한 방법 ) public Team updateTeamInfo(TeamInfoUpdateDto teamInfoUpdateDto) { Team team = em.find(Team.class, teamInfoUpdateDto.getTeamId()); team.setTeamName(teamInfoUpdateDto.getTeamName()); team.setDetailIntro(teamInfoUpdateDto.getDetailIntro()); return team; } 2. queryDsl에서 update 방법 public long updateTeamInfo(TeamInfoUpdateDto teamInfoUpdateDto) { return queryFactory .update(team) .set(team.teamName, teamInfoUpdateDto.getTeamName()) .where(team.id.eq(teamInfoUpdateDto.getTeamId())) .execute(); } 이 두 방법 다 정상적으로 select 쿼리 이후 update쿼리가 나가는것 까지 확인을 했는데, 차이점이라곤 queryDsl의 리턴 값이 long이다 라는 것밖에 확인을 못했습니다. 둘 중 어떤 것이 update를 할 때 사용하는게 좋을지 모르겠어서 질문드립니다.. 그냥 리턴 차이가 전부인지... 2. 질문 queryDsl에서 update 쿼리의 리턴 값이 long인데 엔티티 타입으로 리턴할 순 없나요?? 3. 질문 2번의 문제로 인해 update쿼리의 겨우 update 로직 이후 리턴 타입은 void로 주고 update한 엔티티를 select해서 엔티티 결과값을 리턴 해주었는데 select 쿼리 한 방 추가로 더 나가긴 하는데 이방법이 괜찮은지 다른 방법이 있는지 궁금합니다.. 감사합니다
우선 2개의 질문을 참고하였습니다. 이것과 이것입니다. 두개의 글을 종합해 보면, V1에서 Order리스트를 반환할때는 Lazy방식이기 때문에 Member객체가 프록시 객체이고, Jackson이 해당 해당 객체를 접근하는 순간 초기화한다는 것입니다. 그리고 해당 프록시 객체를 JSON으로 읽을수 있도록 도와주는 것이 하이버네이트5모듈이라는 것입니다. 여기서 궁금한 점이 //강제 지연 로딩 설정 hibernate5Module.configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true); 이 코드입니다. 해당 코드는 강제 지연 로딩 설정이라고 하는데 강의 21분 20초경 LAZY를 강제 초기화 한다고 나와있습니다. 저는 위의 코드와 for (Order order : orders) { order.getMember().getName(); order.getDelivery().getAddress(); } 이 코드가 같은 역할을 한다고 이해했습니다. 위의 두개의 코드를 삭제하면, 포스트맨으로 요청을 보냈을 때, Member, orderItems, Delivery에는 null 값이 들어갑니다. 두개의 코드중 하나를 넣으면 요청을 넣었을때 Member, orderItems, Delivery에 실제 값이 들어가게 됩니다. 하지만 위의 두 글을 종합한 내용을 보면 Jackson이 해당 해당 객체를 접근하는 순간 초기화 라는 내용이 있습니다. 그렇다면 이미 초기화 된 프록시 객체일텐데 왜 위의 강제초기화 코드를 넣어야 실제 값이 들어가게 되는지 궁금합니다. jackson이 프록시 객체에 접근할때 초기화가 되어서 두 코드를 넣지 않아도 null이 아닌 실제 값이 나와야하는 것 아닌가요? 글이 너무 길어 죄송합니다..ㅠㅠ
<요구사항> 사용자가 맘에 드는 장소를 저장 할 수 있다. Place 에서 FavoritePlace 를 Join 하고 싶다. <관계도> Place(1) - (N)FavoritePlace(N) - (1)User <질문내용> Place 에는 FavoritePlace 필드가 없기 때문에 join 을 사용 할 수 가 없어서 , 양방향 매핑을 이용 하였습니다. 이럴 경우 양방향 매핑을 사용하는것이 맞는지 궁금하고, FavoirtePlace 의 상태가 변경될때의,연관관계 편의메서드를 구현하였는데 흐름은 Place 가 가지고 있는 list 를 순회하여, 바뀌기전의 FavoirtePlace 를 삭제하고 새로운 FavoirtePlace 를 add 하는 로직을 선택하였습니다. 그러다보니 수많은 List 중 FavoirtePlace 하나를 순회하여 찾아 제거 하는 작업이 조금 버거울거같다는 고민이 생겼습니다. 제가 이해한 양방향을 써야 하는 상황이 이부분이 맞는지, 위와 같은 상황에서 어떻게 해결하는게 조금 더 현명할지 조언 듣고 싶습니다! 감사합니다
[질문 내용] 양방향 연관관계에서는 엔티티를 직접 반환 할때 서로 연관관계를 타고타고 가서 무한 루프에 빠집니다. 따라서 한쪽에 무조건 @JsonIgnore 어노테이션을 추가하여 무한루프에 빠지지 않게 해주었습니다. 이때 지연로딩이기 때문에 프록시 객체가 들어가서 버디바이트 에러가 발생하여 Hibernate5Module을 사용하여 해당 에러가 발생하지 않도록 조취하였습니다. 그런데 Hibernate5Module을 추가한뒤에 @JsonIgnore 어노테이션을 모두 빼봐도 V1이 잘 동작하는 것을 확인 하였는데, Hibernate5Module이 해당 기능도 수행하는 것인가요?
vue.js설치후 각각의 vue파일안에 html코드가 호돌맨님 코드처럼 색깔이 구분되지 않고 타이핑을해도 자동완성?? <tem 이정도만 쳐도 <template>이렇게 뜨는정도?? 이런게 안되고 있는데, localhost :5137 를 실행하면 정상적으로 화면은 뜹니다. 제대로 설치가 된걸까요??
JPA 활용편에서 간단하게 상품 댓글 기능을 추가해봤습니다. Item과 ItemReply는 일대다 양방향 관계이고, Member와 ItemReply도 일대다 양방향 관계입니다. < ItemReply 엔티티 > < ItemReply의 생성 메서드 > < ItemReply에 있는 연관관계 편의 메서드 > < Item 엔티티 > < Member 엔티티 > 이렇게 한 뒤, 서비스 코드를 만들고 테스트 코드를 짰습니다. 근데 여기서 제가 생각한 흐름은 ItemReply를 저장할 때, 연관관계 편의 메서드에 의해서 List<ItemReply> itemReplies에 ItemReply가 1개씩 저장되는 것이었는데 테스트 코드를 짠 뒤 실행해본 결과, 각각의 itemReplies에 ItemReply가 저장되기는 했지만 2개씩 저장이 됐습니다. 그래서 연관관계 편의 메서드에서 List에 추가하는 과정을 주석 처리한 후 다시 실행했는데 제가 생각한대로 동작하였습니다. 궁금한 점 1. 연관관계 편의 메서드에서 List에 추가하는 과정이 있을 때, 2개씩 나왔다고 했는데, 1개는 연관관계 메서드에서 추가됐다고 하면 나머지 1개는 어느 부분에서 추가됐는지 모르겠습니다. < Test 코드 > < replyService.reply 메서드 > replyService의 reply 메서드입니다. < ItemReply.createItemReply 메서드 >
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요, 강사님 지난 번에는 도움 많이 받았습니다 🙏 아래 사진은 강의 영상입니다! 13강 12분 50초경 내용입니다. new RawMapper 관련 내용인데요! 강사님 강의에서는 자동 완성으로 RawMapper 가 뜨는 것을 확인했습니다! 아래 사진은 제 컴퓨터 화면입니다. 위 스크린샷과 같이 RawMapper 가 뜨지 않네요 하하 😅 하여 현재 override 로 넘어가는 절차를 진행하지 못하고 있는 상태입니다! 강사님 영상으로 미루어 보건데 아마 스프링 관련에서 제가 뭔가 세팅을 놓쳤거나 인것 같은데, 나름 강사님 영상을 처음부터 다시 살펴보면서 했는데 방법을 못찾겠네요..! 혹시 도움을 좀 부탁드려도 될까요? 😅
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] Joincolumn의 name속성은 그저 member테이블의 조인컬럼의 컬럼명을 지정하는것뿐 team과 매핑하는것과는 관련이없다. member와 team을 연관관계맺는것은 referencedColumnName속성이 하지만 이것을 생략하면 자동으로 team의 pk값으로 연관관계를 맺어줘서 생략한다. 이게 맞을까요?