inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

Cannot read properties of undefined (reading 'data')

미해결

Slack 클론 코딩[실시간 채팅 with React]

제로초님, 전 강의 듣고 할 때만 해도 잘 됐는데 오늘 쉬고 다시 해보니까 이런 오류 메세지가 뜹니다. 해결해보려고 해도 잘 안되네요.. Cannot read properties of undefined (reading 'data') SignUp 폴더에서 index.tsx에 문제가 있다고 떠서 코드 올립니다 import useInput from "@hooks/useInput"; import React, { useCallback, useState } from "react"; import { Form, Label, Input, LinkContainer, Button, Header, Error, Success} from './styles' import axios from "axios"; import {Link} from 'react-router-dom'; // 타입스크립트는 간단하게 말하면 변수, 매개변수, 리턴 값에 타입을 붙여줌 // 변수에는 딱히 타입을 붙여주지 않아도 된다 타입스크립트가 알아서 추론하기 때문에(리턴값도 마찬가지) 그러나 매개변수에는 붙여주어야됨 const SignUp = () => { const [email, onChangeEmail] = useInput('');//useInput은 커스텀 훅 const [nickname, onChangeNickName] = useInput(''); const [password, setPassword] = useState(''); const [passwordCheck, setPasswordCheck] = useState(''); const [mismatchError, setMismathError] = useState(false); const [signUpError, setSignUpError] = useState(''); const [signUpSuccess, setSignUpSuccess] = useState(false); const onChangePassword = useCallback((e: any) => { setPassword(e.target.value); setMismathError(e.target.value !== passwordCheck); // 함수 기준으로 외부 변수만 deps에 적어줌 내부 변수는 x }, [passwordCheck]); const onChangePasswordCheck = useCallback((e: any) => { setPasswordCheck(e.target.value); setMismathError(e.target.value !== password) }, [password]); const onSubmit = useCallback( (e: any) => { e.preventDefault(); if (!mismatchError && nickname) { console.log('서버로 회원가입하기'); setSignUpError(''); setSignUpSuccess(false); axios .post('/api/users', { email, nickname, password, }) .then((response) => { console.log(response); setSignUpSuccess(true); }) .catch((error) => { console.log(error.response); //여기가 문제가 있다고 뜹니다. setSignUpError(error.response.data); }) .finally(() => {}); } }, [email, nickname, password, passwordCheck, mismatchError], ); return ( <div id="container"> <Header>Sleact</Header> <Form onSubmit={onSubmit}> <Label id="email-label"> <span>이메일 주소</span> <div> <Input type="email" id="email" name="email" value={email} onChange={onChangeEmail} /> </div> </Label> <Label id="nickname-label"> <span>닉네임</span> <div> <Input type="text" id="nickname" name="nickname" value={nickname} onChange={onChangeNickName} /> </div> </Label> <Label id="password-label"> <span>비밀번호</span> <div> <Input type="password" id="password" name="password" value={password} onChange={onChangePassword} /> </div> </Label> <Label id="password-check-label"> <span>비밀번호 확인</span> <div> <Input type="password" id="password-check" name="password-check" value={passwordCheck} onChange={onChangePasswordCheck} /> </div> {mismatchError && <Error>비밀번호가 일치하지 않습니다.</Error>} {!nickname && <Error>닉네임을 입력해주세요.</Error>} {signUpError && <Error>{signUpError}</Error>} {signUpSuccess && <Success>회원가입되었습니다! 로그인해주세요.</Success>} </Label> <Button type="submit">회원가입</Button> </Form> <LinkContainer> 이미 회원이신가요?&nbsp; <Link to="/login">로그인 하러가기</Link> </LinkContainer> </div> ); }; export default SignUp;

  • 웹팩
  • react
  • babel
  • socket.io
  • typescript
  • 클론코딩
  • Socket.io
  • 클론코딩
성창수 댓글 1 좋아요 0 조회수 2391

연관관계의 주인을 양쪽 모두 설정할 경우

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 일대다[1:N] 강의의 16분 29초 쯤에 연관관계의 주인이 양쪽에 모두 있으면 망한다라는 언급이 있으신데, 순서가 꼬이거나 예측이 안된다는게 구체적으로 어떤 의미인지 예시가 있을까요? 정말 단순하게 생각하면 어쨋든 연관관계의 주인이 아닌 쪽에서 mappedby를 통해 읽기 전용으로 설정하지 않아도 Member에서 추가하나 Team에서 추가하나 반영될 수 있다면 오히려 좋지 않나 싶은 의구심이 들어서 질문드립니다 감사합니다 :)

  • jpa
  • java
  • JPA
김윤식 댓글 1 좋아요 0 조회수 4933

초기 새팅에 어려움을 가져서 질문드립니다. config.js 파일이 없습니다

미해결

Slack 클론 코딩[실시간 채팅 with React]

https://github.com/ZeroCho/sleact에서 code로 가서 zip파일을 다운 받았습니다. 이후 git clone https://github.com/zerocho/sleact 명령어를 입력한 후, back 폴더에서 npm i까지 마쳤는데, 저는 강의 내용과 다르게 config 폴더가 비어 있습니다. 어떤 부분에서 잘못 따라 하였는이해를 못해서 깃 관련 구글링을 해보다가 결국 질문 드립니다.

  • react
  • typescript
  • socket.io
  • 웹팩
  • Socket.io
  • 클론코딩
  • babel
  • 클론코딩
댓글 1 좋아요 0 조회수 595

tsconfig.json과 webpack.config.ts의 연동구간?

미해결

Slack 클론 코딩[실시간 채팅 with React]

tsconfig.json(ts -> js)로 바꿔주고, 그 후에 webpack.config.ts가 js,css,html들을 하나로 번들링해주는 순서가 맞나요?? $webpack 실행하면 웹팩 프로그램이 그냥 알아서 tsconfig.json이 있으면 먼저 적용한후 webpack.config.ts를 적용하는건가요?

  • 클론코딩
  • Socket.io
  • react
  • socket.io
  • babel
  • 웹팩
  • 클론코딩
  • typescript
초간단 댓글 1 좋아요 0 조회수 499

선행 지식

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 강의 선행으로 요구되는 지식이 자바, 관계형 데이터베이스 기초라고 되어 있는데요 자바랑 MySQL은 공부했습니다. 그런데 JDBC나 JSP, 서블릿, 디자인 패턴 등에 대한 지식이나 웹 개발에 대한 지식은 모른 채로 로드맵 시작해도 상관없나요?

  • spring-boot
  • mvc
  • MVC
  • java
  • spring
11 1 댓글 1 좋아요 0 조회수 535

webp 확장자질문

해결됨

프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2

강사님 안녕하세요 좋은강의 잘 수강중인 학생입니다. 강의중에는 클라이언트에 저장된 확장자 2개의 이미지를 사용해서 분기처리를 하셨는데요, 서버에서 받아오는 이미지파일을 분기처리 할려면(webp를 지원하지않는 브라우저를 위해) webp파일 이미지와 jpg(또는 png) 파일 이미지 총 2개 파일 이미지를 보내줘야 분기처리가 가능한가요? 아니면 서버에서 1개의 확장자 이미지를 보내주면 jpg -> webp 또는 webp->jpg로 바꾸어서 분기처리 하는방법은 없을까요?

  • react
  • devtools
형우리 댓글 1 좋아요 1 조회수 441

allocationSize 관련하여 질문올립니다!

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 잘모르겠습니다 ㅎㅎ.. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1. 데이터 삽입 순서 관련 질문 서버가 여러 대 있다고 가정했을 때, 각 서버에 하단의 이미지처럼 메모리에 50개씩 값을 올려둘 경우, DB에 들어가는 데이터가 순차적으로 안들어가지 않나요? 구체적으로 생각해보지는 않았지만, 순차적으로 데이터가 들어가지 않을 경우에 대한 이슈가 있지 않을까 싶어서 질문드립니다! 2. 중간에 비어있는 구간 관련 질문 위와 마찬가지로 서버가 여러 대 있고 각 서버마다 50개씩 메모리에 할당했다고 가정했을 때, 특정 서버가 죽게되면 죽은 서버의 메모리가 가지고있던 개수만큼의 공백이 생기지 않나요? (거의 그럴 일은 없겠지만) 서버가 시도때도없이 다운될 경우 아무리 Long 타입을 지정했음에도 수가 넘어가는 케이스가 생기지 않을까 싶습니다.

  • jpa
  • JPA
  • java
seungseopahn 댓글 1 좋아요 1 조회수 845

react-router-dom link클릭시 이동이 안되는 오류

미해결

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

안녕하세요 강사님 해당 상품을 클릭했을때 url은 바뀌지만 상품상세페이지로 화면은 바뀌지 않는 오류가 발생했습니다(새로고침하면 화면이 바뀌긴 합니다) 다른 수강생들의 비슷한 질문답변을 참고하여 <React.StrictMode>를 지워도보고 react-router-dom 버전도 5.2.0이고 Route path도 "/products/:id"라고 적었는데 여전히 오류가 해결되지 않습니다 https://github.com/kanghanju/grab-market-client/commit/01c0657f4f64398b47493c1b2c3b44836bf1a785# 여기는 Link태그 해당 수업코드 파일입니다!

  • html/css
  • HTML/CSS
  • 머신러닝 배워볼래요?
  • react
  • node.js
  • react-native
  • 머신러닝
  • nodejs
  • tensorflow
  • express
  • javascript
한조 댓글 2 좋아요 0 조회수 1588

npx sequelize db:seed:all 시, ERROR: Validation error 이슈

미해결

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요 강사님, 강의 중 채널 생성과정에서 오류가 있어 문의를 남깁니다. 먼저, 채널 데이터를 가져오지 못해 다른 문의를 찾아보니 seed 설정을 해주지 않은거 같아 npx sequelize db:create 진행하였고, 이어서 npx sequelize db:seed:all 과정을 진행했습니다 npx sequelize db:seed:all 을 진행하니 Validation error가 발생했습니다. 다른 문의를 보니 db에 sleact table이 생성되지 않아 발생하는 문의글이 많아서 db 사진 올려드릴게요 추가적으로, back 파일에서 npm run dev를 실행하면 db 연결까지 잘 됩니다. 도대체 어디가 잘 못 된 건지 감이 오지 않습니다.. 감사합니다.

  • react
  • babel
  • socket.io
  • typescript
  • 웹팩
  • 클론코딩
  • Socket.io
  • 클론코딩
안찬익 댓글 1 좋아요 0 조회수 1121

POST http://localhost:3090/api/users net::ERR_INTERNET_DISCONNECTED

미해결

Slack 클론 코딩[실시간 채팅 with React]

제로초님, 코드는 정확히 따라 한 거 같은데, 무엇이 문제인지 판단이 안되네요... 리액트 v18, 타입스크립트 v18, axios는 1.2.3 입니다. webpack import path from 'path'; import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; import webpack, { Configuration as WebpackConfiguration } from "webpack"; import { Configuration as WebpackDevServerConfiguration } from "webpack-dev-server"; interface Configuration extends WebpackConfiguration { devServer?: WebpackDevServerConfiguration; } import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; const isDevelopment = process.env.NODE_ENV !== 'production'; const config: Configuration = { name: 'sleact', mode: isDevelopment ? 'development' : 'production', devtool: !isDevelopment ? 'hidden-source-map' : 'eval', resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], alias: { '@hooks': path.resolve(__dirname, 'hooks'), '@components': path.resolve(__dirname, 'components'), '@layouts': path.resolve(__dirname, 'layouts'), '@pages': path.resolve(__dirname, 'pages'), '@utils': path.resolve(__dirname, 'utils'), '@typings': path.resolve(__dirname, 'typings'), }, }, entry: { app: './client', }, module: { rules: [ { test: /\.tsx?$/, loader: 'babel-loader', options: { presets: [ [ '@babel/preset-env', { targets: { browsers: ['IE 10'] }, debug: isDevelopment, }, ], '@babel/preset-react', '@babel/preset-typescript', ], env: { development: { plugins: [['@emotion', { sourceMap: true }], require.resolve('react-refresh/babel')], }, production: { plugins: ['@emotion'] } }, }, exclude: path.join(__dirname, 'node_modules'), }, { test: /\.css?$/, use: ['style-loader', 'css-loader'], }, ], }, plugins: [ new ForkTsCheckerWebpackPlugin({ async: false, // eslint: { // files: "./src/**/*", // }, }), new webpack.EnvironmentPlugin({ NODE_ENV: isDevelopment ? 'development' : 'production' }), ], output: { path: path.join(__dirname, 'dist'), filename: '[name].js', publicPath: '/dist/', }, devServer: { historyApiFallback: true, // react router port: 3090, devMiddleware: { publicPath: '/dist/' }, static: { directory: path.resolve(__dirname) }, proxy: { '/api/': { target: 'http://localhost:3095', changeOrigin: true, }, }, }, }; if (isDevelopment && config.plugins) { config.plugins.push(new webpack.HotModuleReplacementPlugin()); config.plugins.push(new ReactRefreshWebpackPlugin()); } if (!isDevelopment && config.plugins) { } export default config; index.tsx import useInput from "@hooks/useInput"; import React, { useCallback, useState } from "react"; import { Form, Label, Input, LinkContainer, Button, Header, Error} from './styles' import axios from "axios"; const SignUp = () => { const [email, onChangeEmail] = useInput('');//useInput은 커스텀 훅 const [nickname, onChangeNickName] = useInput(''); const [password, setPassword] = useState(''); const [passwordCheck, setPasswordCheck] = useState(''); const [mismatchError, setMismathError] = useState(false); const onChangePassword = useCallback((e: any) => { setPassword(e.target.value); setMismathError(e.target.value !== passwordCheck); // 함수 기준으로 외부 변수만 deps에 적어줌 내부 변수는 x }, [passwordCheck]); const onChangePasswordCheck = useCallback((e: any) => { setPasswordCheck(e.target.value); setMismathError(e.target.value !== password) }, [password]); const onSubmit = useCallback((e: React.FormEvent) => { e.preventDefault(); if(!mismatchError && nickname){ console.log('서버로 회원가입하기'); axios.post('/api/users', { email, nickname, password, }) .then((response) => { console.log(response); })//요청이 성공하면 실행 .catch((error) => { console.log(error.response); })//요청이 실패하면 실행 .finally(() => {});//성공하든 실패하든 실행시키고 싶은 것 } console.log(email, nickname, password, passwordCheck) }, [email, nickname, password, passwordCheck, mismatchError]); return ( <div id="container"> <Header>Sleact</Header> <Form onSubmit={onSubmit}> <Label id="email-label"> <span>이메일 주소</span> <div> <Input type="email" id="email" name="email" value={email} onChange={onChangeEmail} /> </div> </Label> <Label id="nickname-label"> <span>닉네임</span> <div> <Input type="text" id="nickname" name="nickname" value={nickname} onChange={onChangeNickName} /> </div> </Label> <Label id="password-label"> <span>비밀번호</span> <div> <Input type="password" id="password" name="password" value={password} onChange={onChangePassword} /> </div> </Label> <Label id="password-check-label"> <span>비밀번호 확인</span> <div> <Input type="password" id="password-check" name="password-check" value={passwordCheck} onChange={onChangePasswordCheck} /> </div> {mismatchError && <Error>비밀번호가 일치하지 않습니다.</Error>} {!nickname && <Error>닉네임을 입력해주세요.</Error>} {/* {signUpError && <Error>{signUpError}</Error>} */} {/* {signUpSuccess && <Success>회원가입되었습니다! 로그인해주세요.</Success>} */} </Label> <Button type="submit">회원가입</Button> </Form> <LinkContainer> 이미 회원이신가요?&nbsp; <a href="/login">로그인 하러가기</a> </LinkContainer> </div> ); }; export default SignUp; 이렇게 따라 한 후에 회원 가입 누르면 아래 같은 화면이 뜹니다.

  • 웹팩
  • react
  • Socket.io
  • socket.io
  • typescript
  • babel
  • 클론코딩
  • 클론코딩
성창수 댓글 2 좋아요 0 조회수 1128

인텔리제이 무료 버전도 학습에 지장없나요?

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

지장없다는 말도 있고 있다는 말도 있던데 저는 김영한님 로드맵 2개 다 들을 예정인데 강의가 몇십 개 있더라구요 인텔리제이 무료 버전을 써서 막히는 부분들이 있을까요?

  • java
  • spring
  • mvc
  • spring-boot
  • MVC
11 1 댓글 1 좋아요 0 조회수 468

편집

미해결

프로젝트로 배우는 React.js

72번째 강의 초반부 편집오류 있습니다.

  • es6
  • react
  • redux
댓글 1 좋아요 0 조회수 323

비동기문제

미해결

프로젝트로 배우는 React.js

강의에서는 toast가 비동기적으로 실행되는것을 해결하기 위해 useRef를 활용했는데 혹시 async나 promise로도 해결이 가능한건가요?

  • react
  • es6
  • redux
댓글 1 좋아요 1 조회수 320

페치조인 별칭

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/) [질문 내용] 질문 1 ============================================ 별칭과 관련하여 영한님의 댓글을 찾아보던 도중 라는 글이 있습니다. 제가 이해한 바로는 1:N 이던 N:1 이던 1:1 이던 페치조인할때 별칭은 사용하지 않는것이 좋지만 페치 조인시 별칭을 사용했을때와 별칭을 사용하지 않았을때와 의 데이터가 일치한다면(정합성) 사용 할수 있다 이렇게 이해를 했는데 맞나요 ? 질문 2 ============================================ 페치조인시 1:N 에서 페이징을 사용할수 없는 이유는 페치조인의 메커니즘 자체가 1:N 이면 N 만큼 데이터를 다 가지고 있어야 하는데 ex) @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); (Team 은 페치조인시 members 의 뻥튀기 된 데이터를 모두 가지고 있어야한다) 그런데 이때 페이징을 실행하면 뻥튀기된 데이터를 가지고 있을수가 없다. 그래서 JPA는 메모리에 모든 정보를 끌어모아 저장 시킨후 메모리에서 페이징 처리를 실행 하기 때문에 메모리 부족 현상이 나타날수 있다 이렇게 이해를 했는데 맞나요 ? (질문1,2) ======================질문3 페이징 처리를 위해 N:1 을 1:N 으로 바꿔서 페치조인을 하면 되는데 막상 이 쿼리를 디비에 실행해도 둘다 데이터가 각 3건씩 똑같이 나오는게 맞나요 ? (뻥튀기 가 일어나면 데이터가 더많아야 하는게 아닌가요 ? 1:n 조인이) 각각 1:N , N:1 페치조인 실행한 결과 [데이터 뻥튀기는 -> 데이터 베이스 쿼리는 동일하게 나오나, 자바 객체에서 뻥튀기 ->[중복] 현상이라고 생각하면 되는건가요 ??] 이 부분은 몆번을 봐도 햇갈리네요

  • JPA
  • java
기팝 댓글 1 좋아요 1 조회수 1289

playground api-docs 질문

미해결

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

playground에서 api-docs가 강의에 있는 docs랑 다릅니다 같게 할 방법이 있을까요?

  • seo
  • react
  • graphql
  • nodejs
  • Next.js
cheolung 댓글 2 좋아요 0 조회수 446

DB 연결 성공 후 테이블 까지 만들었습니다.

미해결

[리뉴얼] React로 NodeBird SNS 만들기

그런데 테이블을 선택해서 코드를 보려면 자꾸 workbench가 팅겨서 꺼집니다 ㅠㅠ 코드를 깃허브에 있는 class형 함수를 긁어서 사용해서 문제가 되는걸까요..?ㅠㅠ 아래는 오류창입니다..

  • redux
  • nodejs
  • react
  • express
  • Next.js
hyuri 댓글 2 좋아요 1 조회수 557

이거는 왜 오답인가요? 1-1;

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

import java.util.Scanner; public class Main1_1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next().toUpperCase(); char c = str.charAt(0); System.out.println(c); int answer = 0; for(int i=0; i <str.length(); i++) { if( str.charAt(i) == c) { answer++; } } System.out.println(answer); } } 테스트는 잘되는데 왜오답인지모르겠습니다

  • java
  • 코테 준비 같이 해요!
gulang 댓글 1 좋아요 0 조회수 689

HistoryListView 구현 시 KeywordListView 상속 받는 것에 관련해 문의드립니다.

해결됨

[React 1부] 만들고 비교하며 학습하는 React

안녕하세요. 강사님께서 강의에서 HistoryListView 클래스를 작성하실 때 KeywordListView를 상속 받아서 작성하셨는데요. 실무에서도 이와 같이 비슷한(동일한 수준의) 클래스 중 하나를 먼저 구현하고 이를 상속 받아 다른 클래스를 만드는 경우가 흔히 있나요? 저는 아래와 같이 공통의 기능을 갖고 있는 또 다른 클래스 (ex. ListView)를 만들고, 각 클래스들(ex. KeywordListView, HistoryListView)이 이 공통의 클래스를 상속받는 것이 좋을 것이라고 생각했었거든요. KeywordListView -> ListView -> View HistoryListView -> ListView -> View 강사님께서 사용하신 방법 대로 하면 기존의 코드를 최대한 활용할 수 있다는 장점은 있지만 서로 동일한 수준의 클래스가 서로 상속을 받게 되는 것 같아서요.

  • react
  • MVC
JIYEON KIM 댓글 1 좋아요 -2 조회수 391

./gradlew 실행이 안됩니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] cmd창에서 dir입력하고 gradle은 있는데 gradlew는 나오지 않네요... C드라이브 안에 study 폴더가 있고, 그안에 hello spring이 있는 상태인데 어느 부분에서 잘못한 것일까요? ㅠㅠ

  • java
  • spring
  • MVC
  • spring-boot
댓글 1 좋아요 1 조회수 756

프로퍼티 접근 방법과 setter

미해결

실전! Querydsl

안녕하세요 궁금한 부분이 있어 질문 남깁니다 7:58~ 에서 프로퍼티 접근은 setter 를 통해 값이 들어가므로 @Data 애노테이션을 지우고 직접 getter, setter를 만들어주셨습니다. 저는 setter가 없으면 오류가 날 것이라 생각하여 getter, setter를 생성하지 않고 테스트를 해보았는데 정상적으로 실행되더라고요. 오류가 나지 않는 게 맞는지, 그렇다면 이유가 무엇인지 궁금합니다 ㅠㅠ 아래는 실행한 코드입니다 public class MemberDto { private String username; private int age; public MemberDto() { } } @Test public void findDtoBySetter() { List<MemberDto> result = queryFactory .select(Projections.bean(MemberDto.class, member.username, member.age)) .from(member) .fetch(); for (MemberDto memberDto : result) { System.out.println("memberDto = " + memberDto); } } +추가.. .....뒤늦게 MemberDto에 @ToString 을 달아 확인해보았습니다. 오류는 나지 않았지만 안에 값은 없었네요 ㅎㅎㅎ.......

  • java
  • JPA
high 댓글 1 좋아요 1 조회수 553

인기 태그

인프런 TOP Writers

주간 인기글