- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.2
* Operating System version: OSX
* Java version: 1.8

### Steps to reproduce this issue

```java
@Test
public void testSerializeSqlDate() throws IOException, ClassNotFoundException {
    java.sql.Date originTime = new java.sql.Date(System.currentTimeMillis());
    this.protostuffObjectOutput.writeObject(originTime);
    this.flushToInput();

    java.sql.Date serializedTime = protostuffObjectInput.readObject(java.sql.Date.class);
    assertThat(serializedTime, is(originTime));
}
```
### Expected Result

What do you expected from the above steps？

### Actual Result

```shell
Expected: is <2019-06-25>
   but: was <1970-01-01>
Expected :is <2019-06-25>
  Actual   :<1970-01-01>
```

If there is an exception, please attach the exception trace:

```
```

private ByteArrayOutputStream byteArrayOutputStream;
    private ProtostuffObjectOutput protostuffObjectOutput;
    private ProtostuffObjectInput protostuffObjectInput;
    private ByteArrayInputStream byteArrayInputStream;
    @BeforeEach
    public void setUp() throws Exception {
        this.byteArrayOutputStream = new ByteArrayOutputStream();
        this.protostuffObjectOutput = new ProtostuffObjectOutput(byteArrayOutputStream);
    }
    @Test
    public void testWriteObjectNull() throws IOException, ClassNotFoundException {
        this.protostuffObjectOutput.writeObject(null);
        this.flushToInput();
        assertThat(protostuffObjectInput.readObject(), nullValue());
    }
    @Test
    public void testSerializeTimestamp() throws IOException, ClassNotFoundException {
        Timestamp originTime = new Timestamp(System.currentTimeMillis());
        this.protostuffObjectOutput.writeObject(originTime);
        this.flushToInput();
        Timestamp serializedTime = protostuffObjectInput.readObject(Timestamp.class);
        assertThat(serializedTime, is(originTime));
    }
    private void flushToInput() throws IOException {
        this.protostuffObjectOutput.flushBuffer();
        this.byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
        this.protostuffObjectInput = new ProtostuffObjectInput(byteArrayInputStream);
    }
}