Antecedentes
Versión JDK: 1.8
Marco: SpringBoot 2.x
ORM: PSD
Propósito
Agregue un atributo a la entidad de mapeo de la tabla, y no es necesario agregar este campo en la tabla de datos.
Anormal
Después de ejecutar los datos de la consulta, se informa la siguiente excepción:
Causado por: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Columna desconocida 'scheduling0_.res_name' en 'lista de campos' en sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) en sun.reftru.Native. ) en sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Fuente desconocida) en java.lang.reflect.Constructor.newInstance (Fuente desconocida) en com.mysql.jdbc.Util.handleNewInstance (Util.java: 425 ) en com.mysql.jdbc .Util.getInstance (Util.java: 408 ) en com.mysql.jdbc.SQLError.createSQLException (SQLError.java: 944 ) en com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3976 ) en com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java: 3912 ) en com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java: 2530 ) en com.mysql.jdbc.MysqlIO.sqlQueqlIO.sqlQryq.QQ : 2683 ) en com.mysql.jdbc.ConnectionImpl.execSQL (ConnectionImpl.java: 2486 ) en com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java: 1858 ) en com.mysql.jdbc.PreparedStatement.executeQuery (Prepared.executeQuery. java: 1966 ) ) en com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery (FilterChainImpl.java: 3188 ) en com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery (FilterEventAdapter.java: 465 ) en com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery (FilterChainImpl.java: 3185 ) en com.alibaba.druid.wall.WallFilter.preparedStatement_executeQuery (WallFilter.java: 640 ) en com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery (FilterChainImpl.java: 3185 ) en com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery (FilterEventAdapter.java: 465 en com.alibaba.druid .filter.FilterChainImpl.preparedStatement_executeQuery (FilterChainImpl.java: 3185 ) en com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery (PreparedStatementProxyImpl.java: 181 ) en com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery (DruidPooledPreparedStatement.java: 228 ) en org.hibernate.engine.jdbc.internal .ResultSetReturnImpl.extract (ResultSetReturnImpl.java: 60 ) ... 101 más
Razón
Se informa la excepción anterior, lo que indica que incluso sin la anotación @Column , JPA persistirá en el campo.
Resolver
JPA no persiste una solución de campo
La anotación @Transient indica que este atributo no es una asignación a un campo de tabla de base de datos, y el marco ORM ignorará este atributo.
De esta manera, la consulta, agregar y otras operaciones no informarán un error. Al realizar consultas, la lógica separada asigna valor a este atributo y se puede expandir.